2

我目前正試圖在Web應用程序中使用DDD方法實現問題分離。Linq-to-SQL和實體框架在同一個項目中?

我希望能夠實現單元測試,所以鬆散耦合我的UI,服務層和存儲庫層是關鍵因素。

我已經決定我想爲存儲庫層使用實體框架,因爲它會允許我分割我的域上下文和實體。

我們目前在web應用中使用Linq-to-SQL。

在將EF和L2S放入同一個網絡應用程序之前,是否有任何重大缺陷或紅旗需要考慮?或者在就此事採取這種方法之前?

我們的目的是使用EF繼續前進,並在我們觸摸代碼時慢慢遷移代碼,將事物分解爲正確的領域背景。

回答

2

您可以在一個項目中同時使用兩個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可能(暫時)使用相同的類名(無論是由生成的,還是由您自己創建的,如果您先處理代碼)。如果您可以在intellisense中輕鬆識別正確的課程,這非常方便。

  • 或者,您可以考慮將Linq-to-Sql和EF代碼保存在單獨的項目中。