2010-06-02 29 views
0

夥計們,LINQ2SQL,實體:中間層或數據訪問層

在一個標準的三層架構,哪裏會你把你的LINQ2SQL DBML文件?

對於ado.net實體數據模型,您的答案是否相同?

如果dbml文件位於中間層,那麼您是否有數據層?

問候,

佈雷特

回答

0

的DBML確實是在中間層。 LINQ to SQL查詢數據層(您的SQL Server數據庫)。 LINQ to SQL通常位於中間層的底層,並且不會通過線路將LINQ發送到SQL實體(它們不會很好地序列化)。

使用實體框架您的體系結構看起來非常相似,只是EF允許域對象通過線路發送。特別是隨着新技術(如OData)出現,與EF完美結合。

0

DBML應該是數據層的一部分,而不是直接暴露給業務層。相反,最好公開獲取和保存實體的方法,並保持與隱藏的持久性細節的交互(在本例中,它是Linq2Sql,但是通過抽象它,您可以稍後更改爲Linq2Entities或其他任何內容,而不會破壞您的應用程序)。

這也是一個很好的模型,如果它需要執行多個查詢並操縱數據來創建實體,或者在保存時處理額外的工作(處理子表的外鍵等),因爲它保留那些隱藏在其他層的細節。

關於Steven關於L2Sql沒有很好序列化的評論,很遺憾,如果您使用Linq2Sql的構建器開箱即用的話,這種說法是正確的。儘管如此,部分類中的幾個解決方法很容易清除。