映射生产数据库

时间:2010-07-31 00:32:29

标签: nhibernate orm castle-activerecord

我刚刚从我们的生产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)关系,即使我认为它应该是。

3 个答案:

答案 0 :(得分:1)

我会包括适当的关系。

有了这个,你可以从nhibernate中充分受益,一个例子是使用 all-delete-orphan 的映射。 NHibernate会为你处理所有的孩子,没有这个,你必须自己编写删除子记录的代码。

此外,我猜你需要关系来使用延迟加载...再次,我认为你应该映射corectly以使你能够完全使用nhibernate。

答案 1 :(得分:1)

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

答案 2 :(得分:1)

当然,您应该在数据库中正确映射关系。使用像NHibernate这样的ORM,你可以通过完全正确地映射数据库来获得很多收益!

否则,你会发现自己编写了一堆代码,使用NHibernate开箱即用...