EntityFrameworkCore 中实体的几种配置方法
使用数据注解
实体类通常是在Models目录下,直接在实体类上添加属性注解,比如[Required]/[Key]等.
using System.ComponentModel.DataAnnotations;
public class User()
{
[Key]
public string UserId { get; set; }
[Required]
public string UserName { get; set; }
}
重写配置方法
在自己实现的XxxDbContext数据库上下文类中重写配置方法,用Fluent API的方式添加所有实体的配置.
using Microsoft.EntityFrameworkCore;
public partial class XxxDbContext : DbContext
{
public XxxDbContext()
{
}
public HaoyikuDbContext(DbContextOptions<HaoyikuDbContext> options)
: base(options)
{
}
public DbSet<User> Users { get; set; }
// 重写以下方法
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
// 添加实体的配置
modelBuilder.Entity<BizOrderPush>().HasKey();
}
}
实现实体类配置接口
- 新建
ModelConfigurations目录,在该目录下新增每一个实体对应的配置类.
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
/// <summary>
/// 用户实体-模型配置
/// </summary>
public class UserConfiguration : IEntityTypeConfiguration<User>
{
public void Configure(EntityTypeBuilder<User> builder)
{
builder.HasKey(o => o.UserId);
builder.Property(o => o.UserName).IsRequired();
}
}
单独配置每一个实体类后,通过以下方法设置
using Microsoft.EntityFrameworkCore;
public partial class XxxDbContext : DbContext
{
public XxxDbContext()
{
}
public HaoyikuDbContext(DbContextOptions<HaoyikuDbContext> options)
: base(options)
{
}
public DbSet<User> Users { get; set; }
// 重写以下方法
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
// 添加实体的配置
modelBuilder.ApplyConfiguration(new UserConfiguration());
base.OnModelCreating(modelBuilder);
}
}
以上几种方式可以共存,至于到底用哪种,推荐用哪种,各位看着办吧.
参考
EntityFrameworkCore 中实体的几种配置方法的更多相关文章
- CentOS中JDK的三种配置方法
第一种方法(相对稳妥): 使用yum直接安装,在root用户下执行 "yum install java-openjdk-*" 第二种方法(最为稳妥): 前往'https://www ...
- struts2拦截器interceptor的三种配置方法
1.struts2拦截器interceptor的三种配置方法 方法1. 普通配置法 <struts> <package name="struts2" extend ...
- Java数据库连接池的几种配置方法(以MySQL数据库为例)
Java数据库连接池的几种配置方法(以MySQL数据库为例) 一.Tomcat配置数据源: 前提:需要将连接MySQL数据库驱动jar包放进Tomcat安装目录中common文件夹下的lib目录中 1 ...
- Jquery中each的三种遍历方法
Jquery中each的三种遍历方法 $.post("urladdr", { "data" : "data" }, function(dat ...
- qt qml中PropertyAnimation的几种使用方法
qml文章 qt qml中PropertyAnimation的几种使用方法 动画应用场景有以下几种: 首先如果一个Rectangle.动画是要改变它的x和y值 1,Rectangle一旦被创建,就要移 ...
- JS 中深拷贝的几种实现方法
JS 中深拷贝的几种实现方法1.使用递归的方式实现深拷贝 //使用递归的方式实现数组.对象的深拷贝 function deepClone1(obj) { //判断拷贝的要进行深拷贝的是数组还是对象,是 ...
- stl中map的四种插入方法总结
stl中map的四种插入方法总结方法一:pair例:map<int, string> mp;mp.insert(pair<int,string>(1,"aaaaa&q ...
- python中常用的九种预处理方法
本文总结的是我们大家在python中常见的数据预处理方法,以下通过sklearn的preprocessing模块来介绍; 1. 标准化(Standardization or Mean Removal ...
- 数据库连接池在Tomcat中的几种配置方法
数据库连接是一种关键的有限的昂贵的资源,这在多用户网页应用程序中体现的尤为突出.对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标,数据库连接池正是针对这个问题提出的. ...
- spring 整合 mybatis 中数据源的几种配置方式
因为spring 整合mybatis的过程中, 有好几种整合方式,尤其是数据源那块,经常看到不一样的配置方式,总感觉有点乱,所以今天有空总结下. 一.采用org.mybatis.spring.mapp ...
随机推荐
- Java 链表API
Java 链表 1.什么是链表? 链表是一种物理存储单元上非连续.非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针连接次序实现的. 每一个链表都包含多个节点,节点又包含两个部分: 1)一个是数据 ...
- G1原理—7.G1的GC日志分析解读
大纲 1.TLAB的GC日志解读 2.YGC的GC日志解读 3.模拟YGC(单次GC及多次GC的不同场景) 4.打开实验选项查看YGC的详情日志信息 5.Mixed GC日志信息之初始标记过程 6.M ...
- react中refs的使用
1.在dom元素中直接使用ref 意思就是可以在组件中创建一个dom节点的textInput,并将ref直接绑定到他 <script src="https://unpkg.com/@b ...
- 动图图解 | UDP就一定比TCP快吗?
学习&转载文章:"动图图解 | UDP就一定比TCP快吗?" UDP比TCP快吗? 相信就算不是八股文老手,也会下意识的脱口而出:"是". 这要追问为什 ...
- DotNet跨平台 - docker+nginx+ssl 负载均衡
环境:CentOS7 服务器需要安装:docker.nginx.OpenSSL 一.部署方案 在linux服务器上,我们的Web站点程序采用docker容器部署,为了演示负载均衡,我们在同一台linu ...
- 用python做时间序列预测六:相关函数图、偏相关函数图、滞后图
经典的时间序列预测方法都是假设如果一个时间序列有显著的自相关性,那么历史值对预测当前值会很有帮助,但是究竟取多少阶的历史值,就需要通过分析相关函数图和偏相关函数图来得到.本文介绍如何什么是相关函数图和 ...
- Python 合并 Excel 单元格
合并 Excel 单元格是 Excel 数据处理和表格设计中的一项常用操作.例如,在制作表格标题时,经常会将多个单元格合并,使标题能够跨列显示,更加醒目和美观.此外,当对数据进行分类时,为了使同一类别 ...
- C# WebClient调用WebService
WebClient调用WebService (文末下载完整代码) 先上代码: object[] inObjects = new[] { "14630, 14631" }; Http ...
- 经由同个文件多次压缩的文件MD5都不一样问题排查,感慨AI的强大!
开心一刻 今天点了个外卖:牛肉炒饭 外卖到了后,发现并没有牛肉,我找商家理论 我:老板,这个牛肉炒饭的配菜是哪些? 商家:青菜 豆芽 火腿 鸡蛋 葱花 我:没有牛肉? 商家:亲,没有的哦 我:我点的牛 ...
- python 打开yaml文件提示Empty test suite.
网上方案: 我自己: 将test改为其他名称开头即可 读取成功
