視頻演示: http://u.115.com/file/f21113c26 演示重點 通過給實體類成員的 ColumnAttribute 特性設置 DbType 屬性, 就可以為列成員指定它在數據庫中的數據類型了。 賦值給DbType的屬性值是一個字符串。 此字符串可以包含數據類型,數據的大小,以及是否為
視頻演示:http://u.115.com/file/f21113c26
演示重點
通過給實體類成員的ColumnAttribute特性設置DbType屬性,
就可以為列成員指定它在數據庫中的數據類型了。
賦值給DbType的屬性值是一個字符串。
此字符串可以包含數據類型,數據的大小,以及是否為空。
比如ColumnAttribute.DbType="NVarChar(40) NOT NULL"
事實上,只有當我們根據對象模型來創建數據庫的時候,這個屬性才是有用。
也就是調用數據上下文DataContext.CreateDatabase()方法時。
當調用此方法時,它才會讀取DbType的屬性值,然后據此來確定所創建的數據表的列的數據類型。
而通常使用對象模型對數據進行增刪查改這些基本操作的時候,貌似這個屬性就沒什么用武之地了。
另外,也演示了如何通過對象模型來創建數據庫。
這其中分別涉及到了以下3個方法:
DataContext.DatabaseExists():確定是否已經存在指定的數據庫。
DataContext.DeleteDatabase():刪除指定的數據庫。
DataContext.CreateDatabase():根據對象模型創建數據庫。
使用對象模型創建數據庫的時候,如果沒有為實體類的列成員設置ColumnAttribute.DbType屬性,
那么就會使用NVarchar(4000)作為默認數據類型。
基于這個理由,如果我們要使用對象模型創建數據庫的話,
那最好還是顯示而明確的設置實體類列成員的ColumnAttribute.DbType。
而且一定要設置為有效的類型,否則LINQ to SQL所生成的CREATE TABLE命令就會包含無效的數據類型,
自然也就不會被成功執行了。
但如果不用對象模型創建數據庫的話,設置了此屬性反而是多此一舉了。^_^
關鍵代碼
下面的代碼演示如何為實體類的列成員指定它在數據庫中的數據類型,重點是DbType屬性。
下面的代碼演示了如何讓LINQ to SQL根據對象模型創建數據庫。
研習記錄
此代碼主要是用來研習ColumnAttribute.DbType屬性的。
當希望使用DataContext.CreateDtabase()這個方法根據對象模型創建數據庫的時候,這個屬性尤其重要。
那么是否不設置這個屬性,或者這個屬性值設置無效的情況下,都將不能正確創建數據庫呢?
當給DbType屬性設置了一個無效的數據類型時,LINQ to SQL并不能夠確定其是否有效。
它只會簡單的用這個DbType的字符串屬性值組合成一個創建數據庫的SQL命令,
當這個命令發送給數據庫的時候,卻無法正確地執行,因為某個列的數據類型是無效的。
從這點來看LINQ to SQL還是有笨的地方。-_-
如果不設置DbType屬性也可以,不過此時LINQ to SQL會用NVarChar(4000)這個作為其默認類型。
看看這個,我覺得還是明確的指定出來數據類型吧!
如果對象模型的本身不是用來創建數據庫,而僅僅是為了操作已經創建好的數據庫中的數據,
那么完全可以不為列屬性設置這個DbType屬性值。
這并不會影響使用效果的。
但如果要想根據對象模型來創建數據庫的話,那最好還是明確的指定出來數據類型吧!
光腳丫思考 2010-12-28
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com