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

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

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

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

Linq實體繼承的定義

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

 
 
 
  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實體繼承的定義大家應該很熟悉了。下面,我們再來定義兩個Linq實體繼承帖子基類,分別是主題貼和回復貼:

 
 
 
  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,而對于回復貼就保存為1?;貜唾N還有一個相關字段就是回復所屬主題貼的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結果集形狀概述
  2. Linq存儲過程返回詳解
  3. Linq調用LoadProducts方法
  4. Linq使用數(shù)據(jù)表簡單描述
  5. Linq對象引用簡單介紹

本文題目:Linq實體繼承簡單描述
網(wǎng)頁網(wǎng)址:http://www.5511xx.com/article/cdghsii.html