2010-07-31 143 views
2

我刚刚完成从生产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(属于关联)的关系,即使我认为它应该是。

+2

您可以发布样本映射类没有关系? – 2010-07-31 02:51:42

+0

当然,让我真正快速地做出一些事情。 – Mike 2010-07-31 18:27:44

回答

1

我会加入适当的关系。

因此,您可以完全从nhibernate中受益,一个示例是与all-delete-orphan的映射。 NHibernate会为你处理所有的孩子,没有这个,你必须自己写代码来删除子记录。

另外我想你需要的关系使用延迟加载...再次,我认为你应该映射corectly使您能够完全使用nhibernate。

1

前几天我已经回答了your question here关于做什么是正确的事情:将关系映射为适当的关系

1

当然,你应该映射关系,因为它们正确地在数据库中。使用ORM,就像NHibernate一样,你可以通过完全正确的映射数据库来获得很多好处!

否则,你会发现自己写了一堆代码,也就是外的开箱使用NHibernate ...