n:n关系中的NHibernate映射
假设我有Order、Items、OrderItems表和具有n:n关系的Items,OrderItems是关联表。我看到了下面两种定义它们的方法 1.创建与OrderItems具有“HasMany”关系的Order和Items实体 2.创建订单、项目和订单项目实体,订单和项目具有“多个”关系,“订单项目”包含订单和项目属性n:n关系中的NHibernate映射,nhibernate,nhibernate-mapping,fluent-nhibernate-mapping,Nhibernate,Nhibernate Mapping,Fluent Nhibernate Mapping,假设我有Order、Items、OrderItems表和具有n:n关系的Items,OrderItems是关联表。我看到了下面两种定义它们的方法 1.创建与OrderItems具有“HasMany”关系的Order和Items实体 2.创建订单、项目和订单项目实体,订单和项目具有“多个”关系,“订单项目”包含订单和项目属性 我有方法1,它可以很好地工作,但我想知道方法2的作用。如果项目和订单之间的关系很简单(只是存在这种关系),那么您可以在Items.Orders和Orders.Items之间进
我有方法1,它可以很好地工作,但我想知道方法2的作用。如果项目和订单之间的关系很简单(只是存在这种关系),那么您可以在Items.Orders和Orders.Items之间进行多个映射。这将导致NHibernate生成并管理一个包含两个外键的简单交叉引用表 另一方面,如果有其他信息需要与两个外键一起记录,则必须使用不同的实体或值对象来捕获该信息,在两侧使用HasMany 课程:
Order
Id
Name
OrderItems
Item
Id
Name
OrderItems
OrderItem
Id
Order
Item
Quantity
映射:
订单:
Id(c => c.Id);
Map(c => c.Name);
HasMany(c => c.OrderItems).KeyColumn("OrderId");
项目:
订单项:
Id(c => c.Id);
Map(c => c.Quantity);
References(c => c.Order);
References(c => c.Item);
Id(c => c.Id);
Map(c => c.Quantity);
References(c => c.Order);
References(c => c.Item);