av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

Linq實體繼承簡單描述

Linq有很多值得學(xué)習(xí)的地方,這里我們主要介紹Linq實體繼承的定義,包括介紹Linq to sql支持實體的單表繼承等方面。

Linq實體繼承的定義

Linq to sql支持實體的單表繼承,也就是基類和派生類都存儲在一個表中。對于論壇來說,帖子有兩種,一種是主題貼,一種是回復(fù)帖。那么,我們就先定義帖子基類:

 
 
 
  1. [Table(Name = "Topics")]  
  2. public class Topic  
  3. {  
  4. [Column(Name = "TopicID", DbType = "int identity", IsPrimaryKey = true, 
    IsDbGenerated = true, CanBeNull = false)]  
  5. public int TopicID { get; set; }  
  6. [Column(Name = "TopicType", DbType = "tinyint", CanBeNull = false)]  
  7. public int TopicType { get; set; }  
  8. [Column(Name = "TopicTitle", DbType = "varchar(50)", CanBeNull = false)]  
  9. public string TopicTitle { get; set; }  
  10. [Column(Name = "TopicContent", DbType = "varchar(max)", CanBeNull = false)]  
  11. public string TopicContent { get; set; }  

這些Linq實體繼承的定義大家應(yīng)該很熟悉了。下面,我們再來定義兩個Linq實體繼承帖子基類,分別是主題貼和回復(fù)貼:

 
 
 
  1. public class NewTopic : Topic  
  2. {  
  3. public NewTopic()  
  4. {  
  5. base.TopicType = 0;  
  6. }  
  7. }  
  8. public class Reply : Topic  
  9. {  
  10. public Reply()  
  11. {  
  12. base.TopicType = 1;  
  13. }  
  14. [Column(Name = "ParentTopic", DbType = "int", CanBeNull = false)]  
  15. public int ParentTopic { get; set; }  

對于主題貼,在數(shù)據(jù)庫中的TopicType就保存為0,而對于回復(fù)貼就保存為1?;貜?fù)貼還有一個相關(guān)字段就是回復(fù)所屬主題貼的TopicID。那么,我們怎么告知Linq to sql在TopicType為0的時候識別為NewTopic,而1則識別為Reply那?只需稍微修改一下前面的Topic實體定義:

 
 
 
  1. [Table(Name = "Topics")]  
  2. [InheritanceMapping(Code = 0, Type = typeof(NewTopic), IsDefault = true)]  
  3. [InheritanceMapping(Code = 1, Type = typeof(Reply))]  
  4. public class Topic  
  5. {  
  6. [Column(Name = "TopicID", DbType = "int identity", IsPrimaryKey = true, 
    IsDbGenerated = true, CanBeNull = false)]  
  7. public int TopicID { get; set; }  
  8. [Column(Name = "TopicType", DbType = "tinyint", CanBeNull = false, 
    IsDiscriminator = true)]  
  9. public int TopicType { get; set; }  
  10. [Column(Name = "TopicTitle", DbType = "varchar(50)", CanBeNull = false)]  
  11. public string TopicTitle { get; set; }  
  12. [Column(Name = "TopicContent", DbType = "varchar(max)", CanBeNull = false)]  
  13. public string TopicContent { get; set; }  

為類加了InheritanceMapping特性定義,0的時候類型就是NewTopic,1的時候就是Reply。并且為TopicType字段上的特性中加了IsDiscriminator = true,告知Linq to sql這個字段就是用于分類的字段。

【編輯推薦】

  1. Linq結(jié)果集形狀概述
  2. Linq存儲過程返回詳解
  3. Linq調(diào)用LoadProducts方法
  4. Linq使用數(shù)據(jù)表簡單描述
  5. Linq對象引用簡單介紹

本文標(biāo)題:Linq實體繼承簡單描述
網(wǎng)站URL:http://uogjgqi.cn/article/cdghsii.html
掃二維碼與項目經(jīng)理溝通

我們在微信上24小時期待你的聲音

解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流