我刚刚从我们的生产Oracle数据库中完成了100~表的映射。一路走来,我注意到很多关系都没有建模。主要是外键。
我应该修改我的映射以包含适当的关系吗?或者我应该保持映射以反映数据库100%?
我更倾向于使用适当的关系来阐明表格如何相互关联。这是我的意思的一个例子。
[ActiveRecord("Incident")]
public class Incident : ActiveRecordBase<Incident>
{
[PrimaryKey("IncidentId")]
public int IncidentId { get; set; }
[Property(Column = "CustomerOut")]
public int CustomersOut { get; set; }
[Property(Column = "DistrictNumber")]
public int DistrictNumber { get; set; }
}
[ActiveRecord("District")]
public class District : ActiveRecordBase<District>
{
[PrimaryKey("DistrictNumber")]
public int DistrictNumber { get; set; }
[Property(Column = "DistrictName")]
public string DistrictName { get; set; }
}
正如您所看到的,事件表中的DistrictNumber列不是FK(BelongsTo)关系,即使我认为它应该是。
答案 0 :(得分:1)
我会包括适当的关系。
有了这个,你可以从nhibernate中充分受益,一个例子是使用 all-delete-orphan 的映射。 NHibernate会为你处理所有的孩子,没有这个,你必须自己编写删除子记录的代码。
此外,我猜你需要关系来使用延迟加载...再次,我认为你应该映射corectly以使你能够完全使用nhibernate。
答案 1 :(得分:1)
前几天我已经回答your question here关于做什么是正确的事情:将关系映射为正确的关系。
答案 2 :(得分:1)
当然,您应该在数据库中正确映射关系。使用像NHibernate这样的ORM,你可以通过完全正确地映射数据库来获得很多收益!
否则,你会发现自己编写了一堆代码,使用NHibernate开箱即用...