【问题标题】:Mapping production database映射生产数据库
【发布时间】:2010-07-31 00:32:29
【问题描述】:

我刚刚从我们的生产 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; }
}

如您所见,Incident 表中的 DistrictNumber 列不是 FK (BelongsTo) 关系,尽管我认为它应该是。

【问题讨论】:

  • 你能发布一个没有关系的示例映射类吗?
  • 当然,让我快速弹奏一些东西。

标签: nhibernate orm castle-activerecord


【解决方案1】:

我会包括适当的关系。

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

另外我猜你需要使用延迟加载的关系......再次,我认为你应该正确映射以使你能够使用完全休眠。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      当然,您应该映射关系,因为它们在数据库中正确存在。使用诸如 NHibernate 之类的 ORM,您可以通过完全正确地映射 db 获得很多好处!

      否则,您会发现自己编写了一堆代码,这些代码是使用 NHibernate 开箱即用的......

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-20
        • 1970-01-01
        • 1970-01-01
        • 2016-09-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多