我一直在努力为我的电子商务应用程序使用DDD样式。我的大多数业务逻辑都是使用虚假存储库实现的。现在,我想使用NHibernate将我的Domain Model挂钩到一个真正的数据库。
我有一个订单,其中包含OrderLines对象列表
public IList<OrderLine> OrderLines{ ... } //line 1
在我的OrderLine类中,我有一个对父订单的引用,如下所示
2. public Order Order { set; get;} // line 2
根据我的理解,OrderLine是一个Value类而不是Entity类,所以我将使用composite-element来进行映射。
<bag name="OrderLines" table="OrderLines" lazy="true">
<key column="Order_ID"/> <!--This is where I got confused. line 3-->
<composite-element class="OrderLine">
<!-- class attribute required -->
<many-to-one name="Order" class="Order" column="Order_ID"/> <!--Do I need this? line 4-->
...
</composite-element>
</bag>
请注意,在第3行中,我为映射创建了一个关键元素(语法要求这样)。但是由于我在OrderLine类(第2行)中定义了对Order类的引用,我是否还需要在第4行创建映射?
答案 0 :(得分:0)
您不需要第4行。
你可以在stackoverflow的另一个主题中找到关于这个主题的很好的解释:Nhibernate , collections and compositeid