1. 程式人生 > 其它 >LINQ to SQL(4):OR設計器

LINQ to SQL(4):OR設計器

在我們使用LINQ to SQL的時候,需要大量的使用OR設計器,雖然我們手工寫程式碼也是完全可以實現的,但是OR設計器是非常強大的工具,我想有了它,沒有幾個人會去手工寫程式碼,當然了,手動寫程式碼也是必須的,這一篇我就寫幾個典型的需要手工寫程式碼的情況

開啟和關閉複數形式

預設情況下,OR設計器會將資料庫物件從伺服器資源管理器拖放到OR設計器上的時候,會自動將ies,s結尾修改為單數形式,這樣可以更準確的表示例項化的實體類到單個數據記錄的事實,但是某些時候,我們可能會不需要這種效果,這樣倒是可能會把我們的程式碼弄混亂,如果需要關閉這種效果,這樣做

在VS選單欄點選“工具”--“選項”,開啟資料庫工具NODE,點選O/R Designer,然後把“啟動”的值更改為False

擴充套件OR設計器生成的程式碼

的確,OR設計器為我們做了很多的東西,但是某些時候,我們還是不得不動動鍵盤,智慧方便總有它的缺陷,比如下面這種情況:

比如我們查詢資料庫的Account表,而我們不需要它的密碼列,和最後登陸時間列(假設表中是有這些列的),而在我們直接將一個表拖放到OR設計器中的時候,他模型是添加了這些列的,所以我們可能會使用如下的程式碼

var queryWithAlias = from u in db.User
                                 select new NewUser{ 使用者名稱 = u.UserName, 姓名 = u.Name, 年齡 = u.Age };

這樣,我們就沒有一個實體類與之對應了,這種情況下,就需要在原有的xxx.designer.cs類裡新增一個實體類與他進行對應(像第一節寫的那樣),他包含“使用者名稱”,“姓名”,“年齡”等屬性,當然了,我們完全也可以在外部宣告一個這樣的型別,但是這樣不光破壞了物件的封裝,而且在使用上也增加了複雜度

向實體類中新增驗證

驗證實體類是指確認輸入到資料物件中的值是否符合物件架構內的約束,以及是否符合為應用程式所建立的規則的過程。在將更新發送到基礎資料庫之前對資料進行驗證是一種很好的做法,這樣可以減少錯誤。還可以減少應用程式和資料庫之間的潛在往返行程次數

在對實體類中新增驗證的時候,有兩個不同的階段,分別是在列值更改過程中驗證資料和在事體類更新過程中驗證資料,由於 C# 專案不會自動生成事件處理程式,因此您可以使用 IntelliSense 建立列更改分部方法

列更改過程中新增驗證:

partial void On列名Changing(COLUMNDATATYPE value)
    {
       throw new System.NotImplementedException();
    }

我們在使用時候,把“列名”更改為需要驗證的列名

實體類更新過程中驗證:

partial void Update類名(類名 instance)
{
    if (instance.列名 == x)
    {
        string ErrorMessage = "Invalid data!";
        throw new System.Exception(ErrorMessage);
    }
}