走進Linq-Linq to SQL How do I(3)

作者: 橫刀天笑  來源: 博客園  發布時間: 2008-09-23 19:25  閱讀: 7922 次  推薦: 0   原文鏈接   [收藏]  
 

系列文章導航:

走進Linq--Linq橫空出世篇

走進Linq-輝煌的背后

走進Linq-Linq大觀園

不能不說的C#特性-對象集合初始化器

不能不說的C#特性-匿名類型與隱式類型局部變量

不能不說的C#特性-擴展方法

不能不說的C#特性-匿名方法和Lambda表達式

不能不說的C#特性-迭代器(上)及一些研究過程中的副產品

不能不說的C#特性-迭代器(下),yield以及流的延遲計算

走進Linq-Linq to Objects(上)基礎篇

走進Linq-Linq to Objects(下)實例篇

走進Linq-Linq to SQL感性認識篇

走進Linq-Linq to SQL How do I(1)

走進Linq-Linq to SQL How do I(2)

走進Linq-Linq to SQL How do I(3)

走進Linq-How do I(4)拾遺補零篇第一節

走進Linq-Linq to SQL源代碼賞析 Table的獲取過程

走進Linq-Linq to SQL源代碼賞析之Provider的初始化

走進Linq-Linq to SQL源代碼賞析,通過Linq to SQL看Linq

 

NHibernate是使用XML作為映射的配置文件,Caslte中的ActiveRecord(底層還是使用NHibernate)是使用Attribute的方式做映射配置。一個是非侵入的,一個是侵入的。有人喜歡用XML做配置,說這樣靈活,修改配置無需重新編譯,有人喜歡使用Attribute的配置方式,說這樣可維護性好,可以得到編譯期的檢查。

不過在Linq里,這一切都不是問題。Linq to SQL這幾種方式都支持,而且走的更遠。

純Attribute方式配置

XMl文件的配置方式

使用SqlMetal命令行工具生成配置代碼

使用Visual Studio的設計器生成映射配置代碼

純Attribute方式配置

前面幾篇我們都是使用這種Attribute的方式的,在Linq to SQL的第一篇我就介紹了,這些映射的Attribute都存在于System.Data.Linq.Mapping命名空間下。在前面我們已經出現了TableAttribute,ColumnAttribute, AssociationAttribute。實際上還有DataBaseAttribute,ProviderAttribute,FunctionAttribute。本篇后面的內容將在不同的地方對他們做全面的介紹。

Table

Table特性是加在類上面的,不能重復的加,也不能繼承。Table,顧名思義,就是用來定義類和數據庫表之間的映射的,Table是映射定義的關鍵點,如果沒有給一個類加上Table特性,那么即使這個類里面的屬性或字段加上了Column也是無效的,實際上,前面幾篇中的例子,如果沒有給映射類加Table特性在運行時會拋出一個異常:System.InvalidOperationException,說你的類沒有映射為一個Table。Table特性只有一個屬性Name,用于在你的類名和數據庫表名不同的時候來定義。

Column

Column特性就復雜得多了。不過可喜的是,這些屬性的命名都很好,只要見到名字了,基本上就能把意思給猜出來了。

AutoSync

AutoSync:自動同步。這個屬性是一個枚舉類型:

 

public enum AutoSync
{
Default,
Always,
Never,
OnInsert,
OnUpdate
}

 

這個屬性的意思是,執行insert和update操作后,這個類的屬性如何和數據庫表的那個被修改列的字段進行同步。

AutoSync. Default,自動選擇,默認就是這個,一般是如果該列在數據庫里有默認值,Column的IsDbGenerated屬性標記為true的時候則同步。

AutoSync. Always,總是進行同步

AutoSync.Never,從來不同步

AutoSync.OnInsert,在執行插入操作后同步,像我們博客園的那個例子,Blog的Id是主鍵,自增的,插入數據庫的時候我們并不提供,而是數據庫自動生成的,那這個時候我們的類插入以后這個Id如何同步呢?

AutoSync. OnUpdate,在更新的時候同步

0
0
 
標簽:linq objects
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()