【问题标题】:Linq-to-SQL and Entity Framework in the same project?Linq-to-SQL 和实体框架在同一个项目中?
【发布时间】:2016-05-13 07:18:57
【问题描述】:

我目前正在尝试在 Web 应用程序中使用 DDD 方法实现关注点分离。

我希望能够实现单元测试,因此松散耦合我的 UI、服务层和存储库层是关键因素。

我决定将实体框架用于存储库层,因为它允许我拆分我的域上下文和实体。

我们目前在网络应用中使用 Linq-to-SQL。

在将 EF 和 L2S 放入同一个 Web 应用程序之前,我需要考虑哪些主要缺点或危险信号?或者在一般情况下采取这种方法之前?

我们的意图是继续使用 EF 并在我们接触它时慢慢迁移代码,将事物拆分到正确的域上下文中。

【问题讨论】:

    标签: entity-framework linq-to-sql entity-framework-6 domain-driven-design service-layer


    【解决方案1】:

    您可以在一个项目中同时使用两种 ORM,而不会出现任何问题。不过,有一些事情可以让它变得更容易。

    • 使用一个连接字符串。默认情况下,Linq-to-Sql 在应用程序的配置文件中创建一个连接字符串条目,它的名称很长,例如LinqToSql.Properties.Settings.MyDataContextConnectionString。我将删除此连接字符串并将其用于 EF。您必须使用带有连接字符串参数的构造函数来创建 DataContext 实例:

      var connString = ConfigurationManager.ConnectionStrings["MyDbContext"].ConnectionString;
      using (var db = new MyDataContext(connString))
      {
          ...
      }
      

      当然,将其包装到上下文工厂中会更容易。

    • 使用清晰的命名空间。尤其是在转换场景中,Linq-to-Sql 和 EF 可能(暂时)使用相同的类名(如果您以代码为先,则生成或由您自己创建)。如果您可以在智能感知中轻松识别正确的类,那将非常方便。

    • 或者,您可以考虑将 Linq-to-Sql 和 EF 代码保存在不同的项目中。

    【讨论】:

      猜你喜欢
      • 2011-01-15
      • 2010-09-05
      • 1970-01-01
      • 2011-04-27
      • 2010-09-22
      • 1970-01-01
      • 1970-01-01
      • 2011-04-21
      • 1970-01-01
      相关资源
      最近更新 更多