但是,我一直在我最近的項目中廣泛使用LINQ,但我一直無法找到一種處理對象的方式,看起來不是草率或不切實際。LINQ to SQL業務對象創建最佳實踐
我還會注意到我主要使用ASP.net。
我討厭將我的數據上下文或LINQ返回類型暴露給我的UI代碼。我更喜歡對業務對象進行更細粒度的控制,而且它似乎與db非常緊密地聯繫在一起,成爲最佳實踐。
這裏是我試過的方法..
工程項目爲一個自定義類
dc.TableName.Select(λ => new MyCustomClass(λ.ID, λ.Name, λ.Monkey)).ToList();
顯然,這往往會導致大量的wireup代碼用於創建,更新等...
創建包裝器返回的對象
public class MyCustomClass
{
LinqClassName _core;
Internal MyCustomClass(LINQClassName blah)
{
_core = blah;
}
int ID {get { return _core.ID;}}
string Name { get {return _core.Name;} set {_core.Name = value;} }
}
...
dc.TableName.Select(λ => new MyCustomClass(λ)).ToList();
似乎工作得很好,但重新連接更新似乎是幾乎不可能擊敗有所目的。
我也傾向於使用LINQ查詢進行轉換等,通過我的代碼,我很擔心這種方法的速度,儘管我還沒有嘗試過使用足夠大的集合來確認。
創建包裝器返回的對象,而持續的數據上下文
public class MyCustomClass
{
LinqClassName _core;
MyDataContext _dc;
...
}
我的對象中堅持的數據上下文大大簡化了更新,但似乎像利用會話狀態特別是當大量的開銷。
快速提示:我知道λ在這裏的用法在數學上並不正確 - 我傾向於將它用於我的綁定變量,因爲它在視覺上很突出,並且在大多數lambda語句中,它是重要的轉換,而不是變量 - 不知道這是否有什麼意義,但沒有說
對不起,這是一個非常長的問題。 預先感謝您的意見和新年快樂!
你真的可以使用這樣的lambda字符嗎?真棒。 – 2010-01-01 07:11:46
我也喜歡lambda字符用法,榮譽。 – 2010-01-01 07:44:58
我無法想象使用λ是否有效,除非您以某種方式將它映射到某個鍵。儘管如此,它看起來很酷。 – Merritt 2012-03-20 21:15:53