FluentNHibernate中的参考表

时间:2013-02-15 16:24:50

标签: c# nhibernate fluent-nhibernate

我有一组通过参考表(产品,商店和商店产品)映射的表

表格

Table: Product
---------------
Name
Id
Desc


Table: Stores
---------------
Name
Id
ZipCode

Table: StoreProduct
---------------
Id
StoreId
ProductId
isAvailable
ShelfID

模型

public class Store
{
    public int Id {get;set;}
    public string Name {get;set;}
    public List<Product> Products {get;set;}
}

public class Product
{
    public int Id {get;set;}
    public string Name {get;set;}
    public bool isAvailable {get;set;}
    public int ShelfId {get;set}
    public List<Store> Stores {get;set;}
}

映射

public class StoreMap: ClassMap<Store>
{
    public StoreMap()
    {
        Id(x => x.Id);
        Map(x => x.Name).Length(255).Nullable();
        HasMany(x => x.Products)
            .Table("StoreProduct")
            .ParentKeyColumn("StoreId")
            .ChildKeyColumn("ProductId");

    }
}

public class ProductMap: ClassMap<Product>
{
    public ProductMap()
    {
        Id(x => x.Id);
        Map(x => x.Name).Length(255).Nullable();
        HasMany(x => x.Stores)
            .Table("StoreProduct")
            .ParentKeyColumn("ProductId")
            .ChildKeyColumn("StoreId");

    }
}

我看过FluentNHibernate Lookup Table,但无法看到如何将其应用到我的结构中。我会走正确的路线吗?如何使用Fluent Mapping将StoreProduct表映射到每个域模型?

其次,如何将参考查找表中的列映射到子表(请参阅isAvailable列)。

1 个答案:

答案 0 :(得分:3)

我认为你们在这里有多对多的关系。商店包含许多产品,产品可以由多个商店携带。

类似这样的事情

public ProductMap()
{
    Id(x => x.Id);
    Map(x => x.Name).Length(255).Nullable();
    HasManyToMany(x => x.Stores)
        .AsBag()
        .Table("StoreProduct")
}