Linq to sql:论坛表结构

2024-06-03 20:48
文章标签 sql 论坛 结构 database linq

本文主要是介绍Linq to sql:论坛表结构,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

为了演示继承与关系,我们创建一个论坛数据库,在数据库中创建三个表:

 

1           论坛版块分类表 dbo.Categories


 

字段名


字段类型


可空


备注


 

CategoryID int

 

CategoryName            varchar(50)

 

2           论坛版块表 dbo.Boards


not null

 

not null


identity/主键


 

字段名

 

BoardID

 

BoardName

 

BoardCategory


字段类型

 

int

 

varchar(50)

 

int


可空

 

not null

 

not null

 

not null


备注

 

identity/主键

 

 

 

 

对应论坛版块分类表

 

CategoryID


 

3           论坛主题表 dbo.Topics

 

字段名                        字段类型


 

 

 

可空


 

 

 

备注


 

TopicID

 

TopicTitle

 

TopicContent

 

ParentTopic


int

 

varchar(50)

 

varchar(max)

 

int


not null

 

not null

 

not null

 

null


identity/主键

 

如果帖子是主题贴这

 

TopicType

 

实体继承的定义


tinyint


not null


个字段为null,否则

 

就是所属主题id

 

0 –  主题贴

 

1 –  回复帖


 

Linq to sql 支持实体的单表继承,也就是基类和派生类都存储在一个表中。对于论坛来

 

说,帖子有两种,一种是主题贴,一种是回复帖。那么,我们就先定义帖子基类:

 

[Table(Name = "Topics")]

 

public class Topic

 

{

 

       [Column(Name = "TopicID", DbType = "int identity", IsPrimaryKey = true,

 

IsDbGenerated = true,CanBeNull = false)]

 

public int TopicID { get; set; }

 

 

 

 

       [Column(Name = "TopicType", DbType = "tinyint", CanBeNull = false)]

 

public int TopicType { get; set; }

 

 

 

 

       [Column(Name = "TopicTitle", DbType = "varchar(50)", CanBeNull = false)]

 

public string TopicTitle { get; set; }

 

       [Column(Name = "TopicContent", DbType = "varchar(max)", CanBeNull = false)]

 

public string TopicContent { get; set; }

 

}

 

这些实体的定义大家应该很熟悉了。下面,我们再来定义两个实体继承帖子基类,分别

 

是主题贴和回复贴:

 

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 实体定义:

 

[Table(Name = "Topics")]

 

[InheritanceMapping(Code= 0, Type = typeof(NewTopic), IsDefault = true)]

 

[InheritanceMapping(Code= 1, Type = typeof(Reply))]

 

public class Topic

 

{

 

       [Column(Name = "TopicID", DbType = "int identity", IsPrimaryKey = true,

 

IsDbGenerated = true,CanBeNull = false)]

 

public int TopicID { get; set; }

   [Column(Name = "TopicType", DbType = "tinyint", CanBeNull = false, IsDiscriminator

 

= true)]

 

public int TopicType { get; set; }

    [Column(Name = "TopicTitle", DbType = "varchar(50)", CanBeNull = false)]

 public string TopicTitle { get; set; }

 [ Column (Name = "TopicContent" , DbType = "varchar(max)" , CanBeNull = false )]

 

public string TopicContent { get; set; }

 

}

 

为类加了InheritanceMapping 特性定义,0 的时候类型就是NewTopic1 的时候就是

 

Reply。并且为TopicType字段上的特性中加了IsDiscriminator = true,告知Linqto sql

 

个字段就是用于分类的字段。


这篇关于Linq to sql:论坛表结构的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1028074

相关文章

Springboot中分析SQL性能的两种方式详解

《Springboot中分析SQL性能的两种方式详解》文章介绍了SQL性能分析的两种方式:MyBatis-Plus性能分析插件和p6spy框架,MyBatis-Plus插件配置简单,适用于开发和测试环... 目录SQL性能分析的两种方式:功能介绍实现方式:实现步骤:SQL性能分析的两种方式:功能介绍记录

使用 sql-research-assistant进行 SQL 数据库研究的实战指南(代码实现演示)

《使用sql-research-assistant进行SQL数据库研究的实战指南(代码实现演示)》本文介绍了sql-research-assistant工具,该工具基于LangChain框架,集... 目录技术背景介绍核心原理解析代码实现演示安装和配置项目集成LangSmith 配置(可选)启动服务应用场景

oracle DBMS_SQL.PARSE的使用方法和示例

《oracleDBMS_SQL.PARSE的使用方法和示例》DBMS_SQL是Oracle数据库中的一个强大包,用于动态构建和执行SQL语句,DBMS_SQL.PARSE过程解析SQL语句或PL/S... 目录语法示例注意事项DBMS_SQL 是 oracle 数据库中的一个强大包,它允许动态地构建和执行

SQL 中多表查询的常见连接方式详解

《SQL中多表查询的常见连接方式详解》本文介绍SQL中多表查询的常见连接方式,包括内连接(INNERJOIN)、左连接(LEFTJOIN)、右连接(RIGHTJOIN)、全外连接(FULLOUTER... 目录一、连接类型图表(ASCII 形式)二、前置代码(创建示例表)三、连接方式代码示例1. 内连接(I

在MySQL执行UPDATE语句时遇到的错误1175的解决方案

《在MySQL执行UPDATE语句时遇到的错误1175的解决方案》MySQL安全更新模式(SafeUpdateMode)限制了UPDATE和DELETE操作,要求使用WHERE子句时必须基于主键或索引... mysql 中遇到的 Error Code: 1175 是由于启用了 安全更新模式(Safe Upd

Python中顺序结构和循环结构示例代码

《Python中顺序结构和循环结构示例代码》:本文主要介绍Python中的条件语句和循环语句,条件语句用于根据条件执行不同的代码块,循环语句用于重复执行一段代码,文章还详细说明了range函数的使... 目录一、条件语句(1)条件语句的定义(2)条件语句的语法(a)单分支 if(b)双分支 if-else(

使用Navicat工具比对两个数据库所有表结构的差异案例详解

《使用Navicat工具比对两个数据库所有表结构的差异案例详解》:本文主要介绍如何使用Navicat工具对比两个数据库test_old和test_new,并生成相应的DDLSQL语句,以便将te... 目录概要案例一、如图两个数据库test_old和test_new进行比较:二、开始比较总结概要公司存在多

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE

MySql死锁怎么排查的方法实现

《MySql死锁怎么排查的方法实现》本文主要介绍了MySql死锁怎么排查的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录前言一、死锁排查方法1. 查看死锁日志方法 1:启用死锁日志输出方法 2:检查 mysql 错误

MySQL数据库函数之JSON_EXTRACT示例代码

《MySQL数据库函数之JSON_EXTRACT示例代码》:本文主要介绍MySQL数据库函数之JSON_EXTRACT的相关资料,JSON_EXTRACT()函数用于从JSON文档中提取值,支持对... 目录前言基本语法路径表达式示例示例 1: 提取简单值示例 2: 提取嵌套值示例 3: 提取数组中的值注意