2011-08-16 52 views
2

我現在已經閱讀了相當多的內容,並認爲以下內容不可行,但如果可能,我希望得到專家的確認,並可能就「最佳」解決方法提供建議。覆蓋或隱藏部分類中的屬性

在所有自動生成的linq-to-sql類中,我最終將所有屬性加倍,以在值設置時對值進行檢查,比如說,我有一個帶有Name屬性的Person類,最終做到:

public partial class Person 
{ 
    public string Name 
    { 
     get { return this._Name; } 
     set 
     { 
      if (!string.IsNullOrEmpty(value)) 
      { 
       value = value.trim(); 
       this._Name = value.Substring(0, Math.Min(value.Length, 200)); 
      } 
      else 
       throw new InvalidOperationException("Person name cannot be blank"); 
     } 
    } 
} 

簡單的檢查,以確保當我堅持數據庫的名稱不會超過最大長度。

這意味着我最終會在自動生成的類的幾乎每一個屬性上加倍,並且會造成大量混亂,因爲它們最終會被命名爲類似的東西。

我試圖通過自己的對象表示來添加一個圖層,但在實例化依賴於另一個類的類時遇到了問題......說一個人有公司,你實例化人員及其公司爲公司實例化人員,重新實現公司等...

有沒有一些「好」的方法來做我想用分部類來做的事情?如果不是,那麼最好的替代方案是什麼? 也許繼承每一個部分類並覆蓋屬性?使用OnChange事件執行檢查?

回答

2

推薦的方法在ScottGu的博客文章在這裏佈局:http://weblogs.asp.net/scottgu/archive/2007/07/11/linq-to-sql-part-4-updating-our-database.aspx

又一次,在這裏

http://geekswithblogs.net/AzamSharp/archive/2008/03/30/120875.aspx

此外,您可能要考慮移動從L2S實體框架,它提供了更強大的驗證支持。

+0

這兩個博客說得很清楚,謝謝。也似乎很清楚,實體框架是現在走的路。應該讓我的多對多關係更容易管理。謝謝! –

1

這聽起來像你試圖讓linq到SQL做一些它從來沒有打算做的事情。當我碰到這樣的情況下,我開始尋找一種工具/庫/ ORM等,更適合於什麼,我試圖完成