1

我决定使用实体框架作为数据层。我有200多个表格和两个问题:
1.创建数据模型时(* .edmx) - 是否应该包含所有表格(整个数据库)?
2.稍后,我可以将表添加到数据模型吗?加载整个数据库到数据模型?

回答

1

我同意@BrokenGlass。 VS 2010 SP1应该有improved performance of the designer,这对于较大的模型来说效果要好得多,但单个模型中的200张表仍然太多。

ADO.NET团队发布了两篇关于使用大型模型的文章:Part 1Part 2。一般来说,这些文章不仅仅是将你的映射分解为多个EDMX,而且还涉及到在多个EDMX中共享一些可能非常有用的公共实体。没有这种共享,你就不能在另一个EDMX中从一个EDMX中引用实体。另外每个EDMX将有其自己的ObjectContext。将映射分割为多个EDMX应基于某种架构决定:例如由组件分割或由聚合根分割。无论如何,使用多个EDMX将增加应用程序的复杂性,并且您仍然必须了解EF功能不能跨多个EDMX工作 - 例如,您不能在映射到不同EDMX中的实体之上创建一个LINQ到实体的查询。

我回答说,我在单ObjectContext描述了一些hack how to use multiple EDMX files一个问题,但我建议不要使用这种解决办法,直到你必须 - 该解决方案的唯一有意义的用途是从数据库和独立EDMX更新的SSDL实体手动定义单独的EDMX (例如自定义的DefiningQuery)。原因是从数据库函数更新函数将删除您的更改,因此将它们单独保存在从不更新的EDMX中会有帮助。

2

通常,您希望表示数据模型中的所有表,否则无法将它们作为实体进行访问。像你这样的大型数据库模式的一个策略是将它分解成单独的部分(单独的.emdx文件),这些部分一起构成数据模型 - 使用单个.edmx模型可以在某些时候减慢VS - 我个人从未经历过,所以你必须自己尝试一下 - 从现有的数据库创建初始模型很容易,而且毫不费力。

您可以随时在数据模型中添加表格,集成向导允许您仅通过将其指向现有数据库来选择要添加的表格。