c# - Entity Framework 4 DB-First 依赖注入(inject)?

标签 c# asp.net entity-framework dependency-injection

我更喜欢创建我自己的数据库、设置索引、唯一约束等。使用 edmx Entity Framework 设计器从数据库生成领域模型是小菜一碟。

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

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

有没有人有任何资源可以指导我在使用 db-first/代码生成技术时如何使用依赖注入(inject)?

最佳答案

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

使用通用存储库模式,例如找到的那个 here ,IRepository 接口(interface)是您注入(inject)到 ViewModels/Controllers/Whatever 中的东西。

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

我们目前正在使用 EF4 DB-first 和我在上面链接的存储库模式做完全相同的事情,它运行得非常好。

关于c# - Entity Framework 4 DB-First 依赖注入(inject)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8448791/

相关文章:

c# - 静态变量以某种方式维护状态?

asp.net - System.Addin - 创建安全的 ASP.NET MVC 插件

c# - 如何在ListView中插入对象类型?

c# - 回发时复选框状态重置

c# - ASP.Net Core 文件上传进度 session

c# - MVC 5 用户管理器 : The entity type ApplicationUser is not part of the model for the current context

asp.net - 如何将 Entity Framework 对象数据绑定(bind)到 FormView

c# - Entity Framework 和工厂模式

c# - 如何从 ActionFilterAttribute 访问 AppSettings

c# - 在序列化时将字符串属性值转换为 base64