EF之Code First设置主外键关系(二)

2024-06-19 01:32

本文主要是介绍EF之Code First设置主外键关系(二),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、前言

上篇博文说了设置外键名称的问题,这篇博文我们来说说外键应该在那个实体类中定义的问题。

2、实战示例

现在有三个实体类,TUsers(用户类)、TRoles(角色)类,TUsersRoles(用户角色类),一个用户可以对应多个角色,一个角色可以对应多个用户,用户与角色是多对多的关系。
方法一(在主实体中定义),代码如下:

 public class TUsers{[Key]public int UserId { get; set; }public string Account { get; set; }public string Password { get; set; }public DateTime CreateDate { get; set; }public List<TUsersRoles> TUsersRolesList { get; set; }}public class TRoles{[Key]public int Id { get; set; }public string RoleName { get; set; }public string RoleRemark { get; set; }public List<TUsersRoles> TRolesUsersList { get; set; }}public class TUsersRoles{[Key]public int Id { get; set; }}

生成的表结构如下图:
这里写图片描述
我们可以看到外键生产的规则是“类名_主键”.
方法二(在从实体中定义),代码如下:

 public class TUsers{[Key]public int UserId { get; set; }public string Account { get; set; }public string Password { get; set; }public DateTime CreateDate { get; set; }}public class TRoles{[Key]public int Id { get; set; }public string RoleName { get; set; }public string RoleRemark { get; set; }}public class TUsersRoles{[Key]public int Id { get; set; }public virtual TUsers Users { get; set; }public virtual TRoles Roles { get; set; }}

这里写图片描述
外键生产规则”对象名_主键”

多对多关系也可以这样创建,自动生成管理表,如下:

 public class TUsers{[Key]public int UserId { get; set; }public string Account { get; set; }public string Password { get; set; }public DateTime CreateDate { get; set; }public List<TRoles> Roles { get; set; }}public class TRoles{[Key]public int Id { get; set; }public string RoleName { get; set; }public string RoleRemark { get; set; }public List<TUsers> Users { get; set; }}

生成的表结构
这里写图片描述

这篇关于EF之Code First设置主外键关系(二)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Java实现为PDF设置背景色和背景图片

《Java实现为PDF设置背景色和背景图片》在日常的文档处理中,PDF格式因其稳定性和跨平台兼容性而广受欢迎,本文将深入探讨如何利用Spire.PDFforJava库,以简洁高效的方式为你的PDF文档... 目录库介绍与安装步骤Java 给 PDF 设置背景颜色Java 给 PDF 设置背景图片总结在日常的

C#中通过Response.Headers设置自定义参数的代码示例

《C#中通过Response.Headers设置自定义参数的代码示例》:本文主要介绍C#中通过Response.Headers设置自定义响应头的方法,涵盖基础添加、安全校验、生产实践及调试技巧,强... 目录一、基础设置方法1. 直接添加自定义头2. 批量设置模式二、高级配置技巧1. 安全校验机制2. 类型

Java 中的 equals 和 hashCode 方法关系与正确重写实践案例

《Java中的equals和hashCode方法关系与正确重写实践案例》在Java中,equals和hashCode方法是Object类的核心方法,广泛用于对象比较和哈希集合(如HashMa... 目录一、背景与需求分析1.1 equals 和 hashCode 的背景1.2 需求分析1.3 技术挑战1.4

python库pydantic数据验证和设置管理库的用途

《python库pydantic数据验证和设置管理库的用途》pydantic是一个用于数据验证和设置管理的Python库,它主要利用Python类型注解来定义数据模型的结构和验证规则,本文给大家介绍p... 目录主要特点和用途:Field数值验证参数总结pydantic 是一个让你能够 confidentl

Java利用Spire.XLS for Java设置Excel表格边框

《Java利用Spire.XLSforJava设置Excel表格边框》在日常的业务报表和数据处理中,Excel表格的美观性和可读性至关重要,本文将深入探讨如何利用Spire.XLSforJava库... 目录Spire.XLS for Java 简介与安装Maven 依赖配置手动安装 JAR 包核心API介

解决Nginx启动报错Job for nginx.service failed because the control process exited with error code问题

《解决Nginx启动报错Jobfornginx.servicefailedbecausethecontrolprocessexitedwitherrorcode问题》Nginx启... 目录一、报错如下二、解决原因三、解决方式总结一、报错如下Job for nginx.service failed bec

Springboot项目构建时各种依赖详细介绍与依赖关系说明详解

《Springboot项目构建时各种依赖详细介绍与依赖关系说明详解》SpringBoot通过spring-boot-dependencies统一依赖版本管理,spring-boot-starter-w... 目录一、spring-boot-dependencies1.简介2. 内容概览3.核心内容结构4.

MySQL设置密码复杂度策略的完整步骤(附代码示例)

《MySQL设置密码复杂度策略的完整步骤(附代码示例)》MySQL密码策略还可能包括密码复杂度的检查,如是否要求密码包含大写字母、小写字母、数字和特殊字符等,:本文主要介绍MySQL设置密码复杂度... 目录前言1. 使用 validate_password 插件1.1 启用 validate_passwo

Java中数组与栈和堆之间的关系说明

《Java中数组与栈和堆之间的关系说明》文章讲解了Java数组的初始化方式、内存存储机制、引用传递特性及遍历、排序、拷贝技巧,强调引用数据类型方法调用时形参可能修改实参,但需注意引用指向单一对象的特性... 目录Java中数组与栈和堆的关系遍历数组接下来是一些编程小技巧总结Java中数组与栈和堆的关系关于

python设置环境变量路径实现过程

《python设置环境变量路径实现过程》本文介绍设置Python路径的多种方法:临时设置(Windows用`set`,Linux/macOS用`export`)、永久设置(系统属性或shell配置文件... 目录设置python路径的方法临时设置环境变量(适用于当前会话)永久设置环境变量(Windows系统