我正在使用具有1000多个表,另外几百个视图和几千个存储过程的SQL Server数据库。我们希望开始在新项目中使用Entity Framework,并且正在制定策略。我最想知道的是如何最好地将表拆分为不同的模型(如果我们先编写代码,则为EDMX或DbContext)。我可以马上想到一些策略:
- 按模式拆分
我们将表拆分成大概十二种模式。我们可以为每个架构创建一个模型。但是,这并不是完美的,因为dbo最终仍然非常大,具有500多个表/视图。另一个问题是,某些工作单元最终将不得不进行跨越多个模型的事务,这增加了复杂性,尽管我认为EF使这一过程变得相当简单。 - 按意图
拆分模型不必担心架构,而是按意图拆分模型。因此,对于每个应用程序,项目,模块,屏幕,我们将具有不同的模型,具体取决于我们希望获得的粒度。我看到的问题是,在某些情况下不可避免地要使用某些表,例如User或AuditHistory。我们是将它们添加到每个模型中(违反我认为的DRY),还是将它们添加到每个项目使用的单独模型中? - 完全不要分裂-一个巨大的模型
从开发的角度来看,这显然很简单,但是从我的研究和我的直觉来看,这似乎可以在设计时,编译时和运行时都表现出色。
在如此大的数据库上使用EF的最佳实践是什么?具体来说,人们在针对大量数据库对象设计模型时会使用哪些策略?是否有我没有想到的选项比上面的选项更好?
另外,这在诸如NHibernate的其他ORM中是否存在问题?如果是这样,他们是否提出了比EF更好的解决方案?