2011-11-01 52 views
2

我确定了一个关系模型对于数据库中的特定集合更有意义。问题是,领域模型最初是从嵌入式模型开始的,并且有大量的UI代码期望它以这种形式出现。更新数据库模式不是问题,但我很好奇是否有任何简单的方法可以将C#域对象重构为更老式的关系模型。我已经开始在版本1和版本2之间编写映射器(使用AutoMapper)(请参见下面的类),但它非常快速地变得杂乱无章。MongoDB:规范化存储到嵌入式域模型

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

// 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 
}

该数据库将不得不进行标准化。如果我不得不重塑域模型,那很好;我只是想感到舒服,我已经耗尽了可能节省时间的其他可能性。有没有简单的解决方案,我忽略了这个问题?

回答

0

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

1

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

+0

这不是一个坏主意,我只是不想使用ORM来映射整个数据库中的一小块 - 特别是考虑到我们已经将C#MongoDB驱动程序用于其他任何事情。 – senfo