asp.net-mvc - 将 ASP.NET MVC 应用程序与 Entity Framework 解耦

标签 asp.net-mvc dependency-injection entity-framework-4.1 separation-of-concerns

如果我有这个项目结构

  • Foo.Data
  • 引用 EntityFramework
  • Foo.Business
  • 引用 Foo.Data
  • Foo.Web
  • 引用 Foo.Business

  • 这不应该允许我阻止从 Foo.Web 添加对 EntityFramework 的引用吗?

    如何调用System.Data.Entity.Database.SetInitializer()来自我的global.asax.cs不添加 EntityFramework 引用?

    最佳答案

    你为什么想要?

    您进行这种解耦的原因是(我假设)使您能够在以后切换数据层,而不必修改 Web 项目中的任何内容,并且在业务项目中尽可能少地进行修改。为此,您应该确保所有类都针对接口(interface)工作,而不是针对具体实现。

    在您的示例中,您可能应该定义一个 Repository某种接口(interface),其中包括 Initialize()方法。然后,您创建一个实现该接口(interface)的类(可能是您的专用 DbContext),并针对它进行操作。在 Initialize()存储库中的方法,调用 Database.SetInitializer()因此,您永远不必在 Web 或业务项目中引用 System.Data.Entity。

    关于asp.net-mvc - 将 ASP.NET MVC 应用程序与 Entity Framework 解耦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6238694/

    相关文章:

    asp.net-mvc - 和 ASP.Net MVC 中的 NTLM

    asp.net-core - .NET 6 IHubContext 依赖注入(inject)

    c# - 在一个 CMS/多个网站系统中管理数据库的最佳方法是什么

    asp.net - Entity Framework 4.1 - 选择多对多关联

    c# - 不分组的 Entity Framework 总和和平均值

    c# - @Html.Partial 导致类型错误

    c# - 将 JSON 列从 MySql 数据库映射到来自 Web Api 的 C# 类

    c# - 创建使用控制反转的对象

    javascript - 基于路由参数动态注入(inject)特定工厂由于某种原因失败

    c# - 在循环内使用 .Where().FirstOrDefault() 时,ASP MVC 中的名称不唯一