C# NHibernate模型映射
我有以下数据库模式(MS SQL 2008): 商店 ID int(主键) 姓名nvarchar(200) 供应商 ID int(主键) ShopID int(FK->Shops.ID) 姓名nvarchar(200) 联络 ID int(主键) 供应商ID int(FK->Suppliers.ID) 电话nvarchar(100) 我的项目中有以下模型:C# NHibernate模型映射,c#,nhibernate,C#,Nhibernate,我有以下数据库模式(MS SQL 2008): 商店 ID int(主键) 姓名nvarchar(200) 供应商 ID int(主键) ShopID int(FK->Shops.ID) 姓名nvarchar(200) 联络 ID int(主键) 供应商ID int(FK->Suppliers.ID) 电话nvarchar(100) 我的项目中有以下模型: public class Shop { public int Id { get; set; } public string
public class Shop
{
public int Id { get; set; }
public string Name { get; set; }
public IList<SupplierContact> SupplierContacts { get; set; }
}
public class SupplierContact
{
public int Id { get; set; }
public string Phone { get; set; }
}
公共类商店
{
公共int Id{get;set;}
公共字符串名称{get;set;}
公共IList供应商联系人{get;set;}
}
公共类供应商联系人
{
公共int Id{get;set;}
公用字符串电话{get;set;}
}
我用映射文件加载我的Shop
模型,但运气不好。主要的是我不需要供应商
模型,我不知道应该如何实现映射以将所有供应商电话作为商店
模型的子列表加载
任何关于如何创建映射的帮助都将不胜感激
提前谢谢
p.S.商店
和供应商联系人
型号将不会更改或删除。
<class name="SupplierContact" table="SupplierContact">
<id name="id" column="id">
<generator class="native" />
</id>
... other properties etc ...
<many-to-one name="Shop" column="ShopId" class="Shop" />
</class>
<class name="Shop" table="Shop">
<id name="Id" column="Id">
<generator class="native" />
</id>
... properties etc ...
<set name="SupplierContacts" table="SupplierContact">
<key column="ShopId" />
<one-to-many class="SupplierContact" />
</set>
</class>
... 其他财产等。。。
... 属性等。。。
编辑:修正了打字错误。有些地方不对劲:我得到的
Shop
s只有一个SupplierContact
ant他们都有相同的ID。你能在你实际工作的地方贴出来吗?听起来好像发生了什么事。另一个选择是查看NHProf-它显示了通过NH进行的所有DB事务,并有助于了解更多信息。NH抱怨key
节点中的name
属性。我用的是NH2.1.2,如果有什么不同的话。啊,是的,哎呀,我错了。应该是-抱歉。id无效-NH尝试选择具有供应商联系人的店铺,其中Shops.id=SupplierContacts.id。使用SQL探查器检查
<class name="SupplierContact" table="SupplierContact">
<id name="id" column="id">
<generator class="native" />
</id>
... other properties etc ...
<many-to-one name="Shop" column="ShopId" class="Shop" />
</class>
<class name="Shop" table="Shop">
<id name="Id" column="Id">
<generator class="native" />
</id>
... properties etc ...
<set name="SupplierContacts" table="SupplierContact">
<key column="ShopId" />
<one-to-many class="SupplierContact" />
</set>
</class>