日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
Linq實(shí)體繼承簡(jiǎn)單描述

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

Linq實(shí)體繼承的定義

Linq to sql支持實(shí)體的單表繼承,也就是基類和派生類都存儲(chǔ)在一個(gè)表中。對(duì)于論壇來說,帖子有兩種,一種是主題貼,一種是回復(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實(shí)體繼承的定義大家應(yīng)該很熟悉了。下面,我們?cè)賮矶x兩個(gè)Linq實(shí)體繼承帖子基類,分別是主題貼和回復(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; }  

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

 
 
 
  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的時(shí)候類型就是NewTopic,1的時(shí)候就是Reply。并且為TopicType字段上的特性中加了IsDiscriminator = true,告知Linq to sql這個(gè)字段就是用于分類的字段。

【編輯推薦】

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

當(dāng)前標(biāo)題:Linq實(shí)體繼承簡(jiǎn)單描述
本文鏈接:http://m.5511xx.com/article/cdghsii.html