首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有人使用过混合了Edmx文件和代码优先方法的实体框架?

有没有人使用过混合了Edmx文件和代码优先方法的实体框架?
EN

Stack Overflow用户
提问于 2011-12-06 15:59:10
回答 2查看 2K关注 0票数 2

我目前被分配到一个项目,他们的遗留系统以一种可怕的方式设计,而且过于关注数据库设计。我试图组合一个新的设计,让客户可以一点一点地迁移遗留系统。

他们目前使用的是EF 4.1,但不是代码优先的方法,实体描述/映射位于edmx文件中。他们每次都会进行逆向工程,以扩展模型(首先在数据库中进行更改,然后通过自定义工具将这些更改向上反映到模型层)。

我想知道的是,如果有人同时使用了edmx和代码优先映射类的方法。还有需要了解的缺点吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-06 16:11:18

只有当每种方法都有单独的上下文类型时,才能同时使用EDMX和代码映射(不能在单个上下文类型中混合使用方法)。这可能是最大的缺点,因为它会导致更复杂的代码和维护。

例如,如果您需要在两个上下文类型中都有某个实体,才能将其用于新代码和旧代码,则必须维护其映射两次。您还必须非常小心,不要复制实体类本身=您的代码首先必须使用由EDMX自定义工具生成的类,但如果他们在当前解决方案中没有使用POCOs,这将是不可能的。

另一个问题是数据库的完整性。如果您需要在单个事务中保存对这两种上下文类型的更改,则必须使用TransactionScope和distributed transaction = MSDTC (每个上下文实例将处理其自己的数据库连接)。

如果您确定要迁移整个系统,那么您可以考虑先使用代码,而不是EDMX (但请注意,代码优先映射和DbContext通常提供更有限的功能集)。如果您不确定是否能够完成整个迁移,甚至不要考虑先使用代码,因为让系统处于一半先使用代码、一半使用EDMX的状态只会让一切变得更糟、更可怕。

确定是有点理论上的,因为在软件开发中,你唯一能确定的是需求/情况会发生变化。这意味着应该非常仔细地考虑迁移。

票数 3
EN

Stack Overflow用户

发布于 2012-07-11 18:28:31

我也被这个问题打动了。我发现您可以在"Ado.NET Entity model “中对数据库建模并”从模型项目中生成数据库“。

但是您不能在该项目中创建存储过程,只能从服务器导入存储过程。

但是,如果您不想在服务器上创建存储过程,您可以在VS上创建另一个项目"SQl CLR数据库项目“,您可以在该项目中对存储过程和老虎进行编码,并将它们部署到服务器上。

然后,您可以再次从"Ado.NET Entity model Project“中通过"Update Model from ”导入这些存储过程。

与wise一样,您可以使用这两种方法开发服务器项目(代码优先和模型优先)

希望这篇文章能添加更多内容:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8396814

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档