MongoDB:规范化存储到嵌入式域模型

时间:2011-11-01 12:46:07

标签: c# mongodb

我已经确定关系模型对数据库中的特定集合更有意义。问题是,域模型最初是使用嵌入式模型启动的,并且存在大量期望它采用这种形式的UI代码。更新数据库模式不是问题,但我很好奇是否有任何简单的方法将C#域对象重新构建为更老式的关系模型。我已经开始在版本1和版本2之间编写映射器(使用AutoMapper)(请参阅下面的类),但它很快就会变得混乱。

下面是一些虚构的代码,概述了类似的域模型。

// Existing
class MyClass
{
    List<Event> Events { get; set; }
    List<Movie> Movies { get; set; }
}

// How it should have been modeled
class MyClass
{
    List<int> Events { get; set; } // Stores Event IDs
    List<int> Movies { get; set; } // Stores Movie IDs
}

必须对数据库进行标准化。

如果我需要改造域模型,那很好;我只是想要感到舒服,我已经筋疲力尽了其他可能节省时间的可能性。我忽略了这个问题的简单解决方案吗?

2 个答案:

答案 0 :(得分:1)

如果您重组的唯一目的是关系数据库,我建议您研究O/R mapping。 O / R映射器(如NHibernateEntity Framework)应该能够将现有的嵌入式模型映射到关系数据库。使用O / R映射器可以消除重新构建域的需要。

答案 1 :(得分:0)

鉴于具体问题,似乎我唯一可以证明的两个选项是我在初始帖子中提到的两个选项(手动映射数据或更改我的域对象)。最终,对我来说,阻力最小的路径是手动映射数据。我很欣赏suggestion by pjvds,但我无法在项目的这个阶段切换到新的ORM,因为考虑到C#MongoDB驱动程序有很多其他的东西可以更好地工作,并且考虑到另一个不需要映射器我们数据库的一部分。