一個簡單的LINQ to SQL查詢可能返回一個產品對象。有意義的是,我可以將這個對象傳遞給我的業務層,然後直接讀取並更新數據。在哪些情況下,我想創建從Linq到Sql結果的自定義業務對象?
我見過一堆實現,其中執行linq查詢後,生成的對象被映射(通過automapper或手動)到自定義業務對象。所以,在我可能有LINQ對象產品的情況下:
product.ProductId 和 Product.ProductName
,然後我會定義一個定製產品業務對象,像這樣:
class BusineszProduct
{
string ProductId;
string ProductName;
}
和一些簡單的映射代碼,如:
BusinessProduct myProduct = new BusinessProduct(); myProduct.ProductId = product.ProductId; myProduct.ProductName = product.ProductName;
然後將myProduct傳遞給我的業務層,修改它,讀取它等等,然後更新linq對象。
在什麼情況下我想創建自定義BusinessProduct類?
第1部分 - 很好的答案。子句1 - 即使是Linq to Sql也能完全感覺b/c如果我使用存儲庫模式,但是如果我創建了另一個圖層,這個對象映射,我可以更容易地將我的數據存儲更改爲一個nosql數據庫。#2 - Linq和MVC好像有很多本機驗證支持,所以我不確定這個註冊是否有w/me。 – Emilio 2010-08-25 22:46:35
第2部分#3 - 爲什麼我可能希望通過導線與使用Linq對象的特定格式來表示數據?#4 - 使總體感覺。我讀過你應該有1: 1視圖與支持該視圖的模型之間的映射,因此在將模型數據從控制器傳遞到視圖之前進行映射是有意義的。另一個替代方法是爲每個視圖創建一個Linq查詢。我的意見是有道理的? – Emilio 2010-08-25 22:47:44
當然 - 這是一個極端的例子 第2點 - 模擬點,但是在N層SOA堆棧中,使用DI等組件引用您的DAL似乎是不對的。 第3點 - 如果您已承諾向消費者發佈特定的XSD/WSDL合約,那麼您確實需要對xmnls,元素vs屬性,名稱等進行良好的級別控制。但是,如果消費者在您自己的控制之下,通常不需要這樣做(例如,您自己的客戶端/ Ajax或類似) – StuartLC 2010-08-26 07:19:27