映射生产数据库

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 开箱即用的......

【讨论】:

以上是关于映射生产数据库的主要内容,如果未能解决你的问题,请参考以下文章

Docker 网络及数据卷设置 [三]

Hibernate 自动生产表

Docker:网络及数据卷设置 [四]

Mybatis---07Mybatis配置文件浅析

在 Angular 中使用源映射生成生产版本 - CLI

如何在生产 Vue.js 中禁用源映射或调试模式 - Webpack