繁体   English   中英

实体框架4 DB-First依赖注入?

[英]Entity Framework 4 DB-First Dependency Injection?

我更喜欢创建自己的数据库,设置索引,独特的约束等。从数据库生成域模型是与edmx实体框架设计器的结合。

现在我有兴趣使用依赖注入建立一些存储库。 我查看了StackOverflow上的一些文章和帖子,似乎专注于代码优先方法。 如何创建一个通用的存储库来处理CRUD并使用依赖注入来选择实现细节是非常光滑的。

我想做同样的事情,但似乎edmx进程生成的域模型继承了具体的类而不是实现接口(ObjectContext / ObjectSet而不是IObjectContext / IObjectSet)。

有没有人能够指出我在使用db-first /代码生成技术时如何使用依赖注入?

也许我误解了你的问题,但是EDMX生成的代码继承自ObjectContext并不会阻止你使用依赖注入。 听起来您担心无法将您的ObjectSet注入您的存储库,但这并不是它的设计使用方式。

使用通用存储库模式(例如此处的存储库模式),IRepository接口就是您注入ViewModels / Controllers / Whatever的东西。

因此,您不要将IObjectContext或IObjectSet注入存储库; 相反,您将IRepsoitory注入需要它的类中,并提供使用ObjectSet的IRepository接口的实现。 然后,您可以模拟您的IRepository接口进行测试,或切换到完全不同的具体存储库实现,而不会影响您的任何其他代码。

我们目前正在使用EF4 DB-first以及上面链接的存储库模式执行完全相同的操作,并且它运行得非常好。

我自己一直在研究这个问题的答案,我得到了这个解决方案: DBContext生成器教程 ,在首先用数据库创建实体模型后生成POCO模型。

之后,实现非常简单,因为这与CodeFirst存储库和DI模式存储库和DI(IoC)模式非常相似

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM