将整个db加载到数据模型?

时间:2011-04-16 02:42:13

标签: .net entity-framework mapping ado.net-entity-data-model edmx

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

2 个答案:

答案 0 :(得分:2)

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

您可以在任何位置向数据模型添加表格,集成向导允许您通过将表格指向现有数据库来选择要添加的表格。

答案 1 :(得分: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-to-entities查询

我回答了一个问题,我在单ObjectContext中描述了一些hack how to use multiple EDMX files,但我建议您在使用之前不要使用该解决方案 - 该解决方案的唯一有意义的用途是从数据库更新的实体的单独EDMX并为手动定义的SSDL分离EDMX(例如自定义DefiningQuery)。原因是从数据库更新功能将删除您的更改,因此将它们分开保存在永远不会更新的EDMX中会很有帮助。