映射生产数据库
Posted
技术标签:
【中文标题】映射生产数据库【英文标题】: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) 关系,尽管我认为它应该是。
【问题讨论】:
你能发布一个没有关系的示例映射类吗? 当然,让我快速弹奏一些东西。 【参考方案1】:我会包括适当的关系。
这样您就可以从 nhibernate 中充分受益,例如使用 all-delete-orphan 的映射。 NHibernate 会为您处理所有子记录,如果没有这个,您必须自己编写删除子记录的代码。
另外我猜你需要使用延迟加载的关系......再次,我认为你应该正确映射以使你能够使用完全休眠。
【讨论】:
【参考方案2】:几天前我已经回复了your question here 什么是正确的做法:将关系映射为适当的关系。
【讨论】:
【参考方案3】:当然,您应该映射关系,因为它们在数据库中正确存在。使用诸如 NHibernate 之类的 ORM,您可以通过完全正确地映射 db 获得很多好处!
否则,您会发现自己编写了一堆代码,这些代码是使用 NHibernate 开箱即用的......
【讨论】:
以上是关于映射生产数据库的主要内容,如果未能解决你的问题,请参考以下文章