千家信息网

Linq如何定义实体继承

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章给大家分享的是有关Linq如何定义实体继承的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Linq实体继承的定义Linq to sql支持实体的单表继承,也就是基类和
千家信息网最后更新 2026年11月02日Linq如何定义实体继承

这篇文章给大家分享的是有关Linq如何定义实体继承的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

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; }

  12. }

这些Linq实体继承的定义大家应该很熟悉了。下面,我们再来定义两个Linq实体继承帖子基类,分别是主题贴和回复贴:

public class NewTopic : Topic  {  public NewTopic()  {  base.TopicType = 0;  }  }  public class Reply : Topic  {  public Reply()  {  base.TopicType = 1;  }  [Column(Name = "ParentTopic", DbType = "int", CanBeNull = false)]  public int ParentTopic { get; set; }  }

对于主题贴,在数据库中的TopicType就保存为0,而对于回复贴就保存为1。回复贴还有一个相关字段就是回复所属主题贴的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; }

  14. }

为类加了InheritanceMapping特性定义,0的时候类型就是NewTopic,1的时候就是Reply。并且为TopicType字段上的特性中加了IsDiscriminator = true,告知Linq to sql这个字段就是用于分类的字段。

感谢各位的阅读!关于"Linq如何定义实体继承"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

实体 主题 字段 就是 帖子 时候 内容 更多 特性 篇文章 别为 不错 实用 两个 也就是 只需 所属 数据 数据库 文章 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网品科技 互联网 的科技创新 齐家互联网科技 互联网科技论文 小马过河互联网科技 互联网科技有限公司 翻译 互联网科技公司招聘 互联网科技热点资讯 重庆威客帮互联网科技 银川新华互联网科技学校联系电话 科技类公司包括互联网吗 卓翼科技产业互联网合作 为客找房互联网科技公司怎么样 每天都有哪些好的互联网科技 广州千川互联网科技有限公司 互联网领先科技宣传片 上海创道互联网络科技有限公司 南京一网一红互联网科技有限公司 互联网对科技影响 互联网 科技节活动 微视频大赛 互联网金融科技 蓝思科技飞鸽互联网 互联网科技深圳 互联网科技公司名称 宜昌元轩互联网科技有限公司 深圳互联网科技的发展 电子商务与互联网科技的关系 广州百诚互联网科技有限公司官网 中国科技和美国互联网 西安左小互联网科技有限公司
0