我有一组通过参考表(产品,商店和商店产品)映射的表
表格
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列)。
答案 0 :(得分:3)
我认为你们在这里有多对多的关系。商店包含许多产品,产品可以由多个商店携带。
类似这样的事情
public ProductMap()
{
Id(x => x.Id);
Map(x => x.Name).Length(255).Nullable();
HasManyToMany(x => x.Stores)
.AsBag()
.Table("StoreProduct")
}