实体框架4db - first依赖注入

本文关键字:依赖 注入 first 框架 4db 实体 | 更新日期: 2023-09-27 18:17:34

我更喜欢创建自己的数据库,设置索引,唯一的约束等。使用edmx实体框架设计器从数据库生成域模型非常简单。

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

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

有没有人有任何资源,他们可以指出我如何使用依赖注入时,利用db-first/代码生成技术?

实体框架4db - first依赖注入

也许我误解了您的问题,但是EDMX生成从ObjectContext继承的代码这一事实并不能阻止您使用依赖注入。听起来好像您担心不能将ObjectSet注入到Repository中,但这并不是它设计的使用方式。

使用一个通用的存储库模式,比如这里发现的,IRepository接口是你注入到你的ViewModels/Controllers/Whatever的东西。

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

我们目前正在用EF4 DB-first和我上面链接的存储库模式做同样的事情,并且它工作得非常好。

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

之后的实现非常简单,因为这与CodeFirst Repository&DI模式Repository&DI (IoC)模式