Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 同一项目中的Linq到SQL和实体框架?_Entity Framework_Linq To Sql_Entity Framework 6_Domain Driven Design_Service Layer - Fatal编程技术网

Entity framework 同一项目中的Linq到SQL和实体框架?

Entity framework 同一项目中的Linq到SQL和实体框架?,entity-framework,linq-to-sql,entity-framework-6,domain-driven-design,service-layer,Entity Framework,Linq To Sql,Entity Framework 6,Domain Driven Design,Service Layer,我目前正在尝试在web应用程序中使用DDD方法实现关注点分离 我希望能够实现单元测试,因此UI、服务层和存储库层的松散耦合是关键因素 我决定将实体框架用于存储库层,因为它允许我拆分域上下文和实体 我们目前在web应用程序中使用Linq to SQL 在将EF和L2S放在同一个web应用程序中之前,我需要考虑哪些主要缺点或危险信号?或者在采取这种方法之前 我们的目的是继续使用EF,并在接触代码时缓慢地迁移代码,将其拆分为正确的域上下文。您可以在一个项目中使用这两种ORM,而不会出现任何问题。不过,

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

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

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

我们目前在web应用程序中使用Linq to SQL

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


我们的目的是继续使用EF,并在接触代码时缓慢地迁移代码,将其拆分为正确的域上下文。

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

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

    var connString = ConfigurationManager.ConnectionStrings["MyDbContext"].ConnectionString;
    using (var db = new MyDataContext(connString))
    {
        ...
    }
    
    当然,将其封装到上下文工厂更容易

  • 使用清晰的名称空间。特别是在转换场景中,Linq到Sql和EF可能(暂时)使用相同的类名(如果您首先使用代码,可以生成,也可以自己创建)。如果您可以很容易地在intellisense中识别正确的类,这将非常方便

  • 另一方面,您可以考虑在不同的项目中保留LINQ到SQL和EF代码。