程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 講講Linq to SQL映射(基礎篇)

講講Linq to SQL映射(基礎篇)

編輯:C#入門知識

        這篇主要講Linq to  SQL基於屬性的映射。即映射數據庫,映射表,映射列,映射關系,映射存儲過程,

映射函數。然而創建這種映射有三種方法,他們分別是ORD工具,SQLMetal命令行工具,以及編寫手工代碼

創建。

        咱們首先了解下手工創建屬性映射的方法,這樣你就能看懂基於工具產生的代碼了。他們的區別也就是

使用工具效率會更高些,但前提需要先設計好數據庫,這樣就可以直接通過數據庫的結構輸出你的實體類。

1、映射數據庫

映射數據庫主要通過Database屬性來指定,引用命名空間System.Data.Linq.Mapping;

具體看如下代碼:

    [Database(Name =  
         Table<LoginUser> Table<UserBaseInfo> Table<Aritcal> MyDbContext( connection)  : 

然後再創建數據庫連接的時候,就可以這樣寫,如果database 不設置的話,默認的數據庫名就會為MyDbContext 類名:

MyDbContext db =  MyDbContext();

這樣的話,輸出的連接sql語句為:

3、映射列

映射列使用的attribute屬性為Column,參數設置比較多,具體看如下代碼:

//CanBeNull不能亂用,如果某列CanBeNull設置為true,但從數據庫中查出來的值為null的話,
            //
           AutoSync:在執行insert或者update操作之後獲取列值,默認為never;
        
= , IsPrimaryKey = , IsDbGenerated =   UserID { ; = , CanBeNull = , UpdateCheck =  UserName { ; = , CanBeNull = , UpdateCheck =  UserNickName { ; ; }

4、映射關系

這裡的關系是指的數據庫中一對多和一對一。主鍵基表和外鍵基表的設置也能通過實體字段的Association屬性(IsForeignKey=true)來進行關聯,從而在創建數據庫時,自動創建表之間的關系。

但要結合EntityRef<T>或 EntitySet<T> 來定義並表示一個關系

EntityRef代表一對多關系中的單一實例方,EntitySet主要代表一對多和一對一關系中的集合方,下面分別用代碼介紹

以用戶基本信息表 UserBaseInfo和用戶文章表Aritcal來作為介紹,他們是一對多的關系

1)EntityRef+Association的使用

因為EntityRef代表的是1:M關系中的1,所以它應該為Aritcal實體的成員,泛型對象為UserBaseInfo

這裡UserBaseInfo的實體和Artical實體分別為:

    [Table(Name =  = , IsPrimaryKey = , IsDbGenerated =   UserID { ; = , CanBeNull = , UpdateCheck =  UserName { ;          EntitySet<Aritcal>= , OtherKey =  EntitySet<Aritcal> { =  ), Column(IsPrimaryKey = , CanBeNull = , DbType =   ArticalID { ; ), Column(CanBeNull = , DbType =   UserID { ; ), Column(DbType = , UpdateCheck =  ArticalTitle { ; ), Column(DbType = , UpdateCheck =  CategoryID { ; ), Column(DbType = , UpdateCheck =  ModuleID { ; ), Column(DbType = , UpdateCheck =  Content { ;  EntityRef<UserBaseInfo>
        [Association(Name = , ThisKey = , OtherKey = , IsForeignKey = , 
        Storage =  {  { _UserBaseInfo.Entity =

這樣Artical自動創建外鍵,生成的表結構關系為

見查詢代碼:  查詢用戶信息表中用戶ID為1的用戶信息,通過調用Articals成員,自動關聯查詢出用戶id為1的文章列表
            UserBaseInfo userbase = db.GetTable<UserBaseInfo>().Where(a => a.UserID ==  (Aritcal artical .Format(

查詢結果如下:

然後在MyDbContext類中添加如下方法
 
         
         
         
         
        [Function(Name =   GetPassword([Parameter(DbType = )]  userid, [Parameter(DbType = )]  = = .ExecuteMethodCall(= ()result.GetParameterValue(); 
             ()result.ReturnValue; 
        }

調用代碼如下:

+str);

調用結果如下:

然後在vs中編寫代碼調用

        [Function(Name = , IsComposable =   Fun_GetPassword([Parameter(DbType = )] = .ExecuteMethodCall( (
            mypwd=+mypwd);

調用結果如下:

QQ20130905210650_thumb3

下載源碼

您的支持是我最大的動力,喜歡就點推薦吧!!!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved