首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

EntityFramework Core 学习扫盲

计算列 计算列指的是列的数据由数据库计算生成,在EF CORE层面,我们只需要定义计算规则即可。目前EF CORE 1.1 版本中,暂不支持使用Data Annotations方式定义。...默认值 默认值与计算列定义十分相似,只是计算列无法由用户手动输入。而默认值更多指的是当用户不手动输入时,使用默认值进行数据库相应列的填充。...主体和唯一标识 在这一节中,让我们来回顾一下HasPrincipalKey方法和唯一标识。 在EF CORE中,主体(Principal Entity)指的是包含主键/备用键的实体。...而主体键(Principal Key)指的是主体中的主键/备用键。大家都知道,主键/备用键都是不可为空且唯一的,这就引出了唯一标识列的写法。...常见的关系有1-1,1-n,n-n,除此以外,关系的两边还有可空不可空的控制。那么在EF CORE中,我们怎么实现这些关系呢?

9.6K90

01-EF Core笔记之创建模型

如果你想改变默认值,很简单,EF Core提供了Fluent API或Data Annotations两种方式允许我们定制数据模型。...;备用键是与主键相对应的一个概念,备用键字段的值可以唯一标识一条数据,它对应数据库的唯一约束。...默认情况下,如果你的类型中包含一个字段,那么EF Core都会将它映射到数据库中,导航属性亦是如此。...):基类和子类不在同一个表中,子类中包含基类的所有字段,目前EF Core不支持该模式 EF Core仅支持TPH模式,基类和子类数据将存储在同一个表中。..."Discriminator") .HasMaxLength(200); EF Core允许我们通过FluentAPI的方式自定义鉴别器的列名和每个类对应的值: modelBuilder.Entity

3.1K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    EF Core索引

    EF Core 每个不同的属性集仅支持一个索引。 如果使用 "熟知 API" 来配置已定义索引的属性集的索引(按照约定或以前的配置),则会更改该索引的定义。 ...如果要进一步配置由约定创建的索引,则此操作非常有用。 索引唯一性 默认情况下,索引不唯一:允许多行具有与索引的列集相同的值。 ...这使您可以只为列的值的一个子集编制索引,从而减少索引的大小并改善性能和磁盘空间的使用情况。 有关 SQL Server 筛选索引的详细信息,请参阅文档。...时,将为唯一索引中包含的所有可以为 null 的列添加 'IS NOT NULL' 筛选器。 ...某些关系数据库允许配置一组列,这些列包含在索引中,但不是其 "键" 的一部分。

    1.6K10

    解决因C#8.0的语言特性导致EFCore实体类型映射的错误

    今天下午在排查一个EF问题时,遇到了个很隐蔽的坑,特此记录。...问题 使用ef执行Insert对象到某表时报错,此对象的Address为空: 不能将值 NULL 插入列 'Address',表 'dbo.xxx';列不允许有 Null 值。INSERT 失败。...于是开始排查:手动创建一个空程序集,引用EFCore,从原项目拷贝EF设计时库、DbContext和各实体类,一顿操作后竟然发现在新的程序集中生成的迁移文件是符合预期的。...官方文档 该功能允许对引用类型进行批注,指示引用类型能否包含 null。...通过查看EF文档了解到,可为空引用类型通过以下方式影响 EF Core 的行为: 如果禁用可为空引用类型,则按约定将具有 .NET 引用类型的所有属性配置为可选 (例如 string ) 。

    37120

    数据库MySQL-列属性

    1.3 列属性 1.3.1 是否为空(null|not null) null表示字段值可以为null not null字段值不能为空 练习 学员姓名允许为空吗?...not null 家庭地址允许为空吗? not null 电子邮件信息允许为空吗? null 考试成绩允许为空吗?...truncate table删除数据后,再次插入从1开始 练习 在主键列输入的数值,允许为空吗? 不可以 一个表可以有多个主键吗?...不可以 在一个学校数据库中,如果一个学校内允许重名的学员,但是一个班级内不允许学员重名,可以组合班级和姓名两个字段一起来作为主键吗? 对 标识列(自动增长列)允许为字符数据类型吗?...10 1.3.5 唯一键(unique) 键 区别 主键 1、不能重复,不能为空2、一个表只能有一个主键 唯一键 1、不能重刻,可以为空2、一个表可以有多个唯一键 例题 -- 创建表的时候创建唯一键

    3.1K30

    .NET ORM 鉴别器 和 TDengine使用-SqlSugar

    作为底层 特色1:超级简单 在不用任何设计模式,任何框架的情况下都可以拥有最佳体验,SqlSugar做到了保姆一样的服务,直接用不需要学习 的框架,各种默认值都是最佳配置,用到什么看一下文档便可。...特色2:产品必备 可以一套代码支持所有主流数据库(包括国产数据库),成本要远低于EF Core, EF Core基本每个数据库都需要手动写 兼容代码 。例如:建表、查询函数、索引 、修改表等等。...一、鉴别器(Discrimator) 类似tdengine里面超级表概念, 他可以在一张表里面存储一个或者多个个性化字段,查询自动变成条件,并且插入更新都会自赋值进行存储 Discrimator ="Type...= true)]//可空 public int CatId { get; set; } [SugarColumn(IsNullable = true)]//可空 public string...Color { get; set; } } 创建表 db.CodeFirst.InitTables(); //这个表包含所有字段,包括Type分类字段 查询和插入

    37520

    .NET EF Core(Entity Framework Core)

    EF Core与其他ORM比较 1、Entity Framework Core(EF Core)是微软官方的ORM框架。...修改表结构 想要限制Title的最大长度为50,Title字段设置为“不可为空”,并且想增加一个不可为空且最大长度为20的AuthorName(作者名字)属性。...对于ROWVERSION类型的列,在每次插入或更新行时,数据库会自动为这一行的ROWVERSION类型的列其生成新值。...总结:如果有一个确定的字段要被进行并发控制,那么使用IsConcurrencyToken()把这个字段设置为并发令牌即可;如果无法确定一个唯一的并发令牌列,那么就可以引入一个额外的属性设置为并发令牌,并且在每次更新数据的时候...,手动更新这一列的值。

    47412

    Entity Framework Core 2.0 新特性

    (本文的英文原文地址:这里) 1.实体方面的新内容     1.1表拆分      现在可以将多个实体类型映射到将要共享主键列的同一个表,并且每一行将对应于两个或多个实体。    ...包含定义导航的实体是所有者。当查询所有者时,默认情况下将包含所有类型。 按照惯例,将为所属类型创建一个影子主键,并通过使用表分割将其映射到与所有者相同的表。...虽然EF Core通常可以根据查询表达式的散列表示自动编译和缓存查询,但这种机制可以通过绕过哈希计算和高速缓存查找来获得小的性能增益,从而允许应用程序使用已经通过调用委托编译了查询。...3.3FromSql和ExecuteSqlCommand中的字符串插值 C#6(C#6.0特性请移步:这里)中引入了字符串插值,这是一个允许C#表达式直接嵌入到字符串文字中的功能,提供了一种在运行时构建字符串的好方法...这种新的支持允许以“安全”的方式使用C#字符串插值。这样就可以防止在运行时动态构建SQL时发生的常见SQL注入攻击.

    3.9K90

    MySQL 关于索引那点事

    主键:加快检索数据/唯一标识 常用索引类型:    01.普通索引:允许在定义为索引的列中 出现 重复值和空值!   ...02.唯一索引:索引列不允许出现重复值,但是可以出现一个空值!    03.主键索引:创建主键的时候,系统会默认创建一个主键索引!唯一!不能为空!    04.复合索引:将我们的多个列组合起来!...05.全文索引:允许值的全文查询!允许空值和重复值!适合在一个内容比较多的列!text!   ...06.空间索引:对空间数据类型的列建立的索引 ■按照下列标准选择建立索引的列 频繁搜索的列 经常用作查询选择的列 经常排序、分组的列 ,经常用作连接的列(主键/外键) ■请不要使用下面的列创建索引 仅包含几个不同值的列...02.索引尽量要少,在字节数小的列上建立索引!   03.where字句中有多个条件表达式的时候,包含索引的列要放在其他表达式之前!   04.在order by的字句中避免使用表达式!

    73890

    关于 MySQL索引的注意点

    主键:加快检索数据/唯一标识 常用索引类型:   01.普通索引:允许在定义为索引的列中 出现 重复值和空值!  ...02.唯一索引:索引列不允许出现重复值,但是可以出现一个空值!   03.主键索引:创建主键的时候,系统会默认创建一个主键索引!唯一!不能为空!   04.复合索引:将我们的多个列组合起来!...05.全文索引:允许值的全文查询!允许空值和重复值!适合在一个内容比较多的列!text!  ...06.空间索引:对空间数据类型的列建立的索引 ■按照下列标准选择建立索引的列 频繁搜索的列 经常用作查询选择的列 经常排序、分组的列 ,经常用作连接的列(主键/外键) ■请不要使用下面的列创建索引 仅包含几个不同值的列...02.索引尽量要少,在字节数小的列上建立索引!   03.where字句中有多个条件表达式的时候,包含索引的列要放在其他表达式之前!   04.在order by的字句中避免使用表达式!

    33920

    C# 数据操作系列 - 6 EF Core 配置映射关系

    EF Core 入门》篇中,我们简单的通过两个类演示了一下EF增删改查等功能。细心的小伙伴可能看了生成的DDL SQL 语句,在里面发现了些端倪。没看的小伙伴也不急,这就贴出来。...修改映射关系 EF允许开发人员指定自己的映射规则或者单个类的映射规则。EF 提供了几种方式来修改映射关系。 2.1 数据注解 EF允许开发人员通过使用Attribute标记,来约定映射关系。...)] 用来表示这个字段在第一次插入数据库时,值由数据库提供 [ForeignKey("ModelAId")] 表示该导航属性具体值由 名称为 ModelAId 的属性维护,如果没有该属性,EF则记录添加但不对外显示...[Column] 表示列,用来设置一些列的基本参数,比如类型、名称 [Required] 表示该列在插入数据库时不能为空 使用注解进行相关配置相当简单,但是这样不可避免的需要修改模型类而且需要引入额外的命名空间...总结 在这一篇领着大家看了一下EF Core对于映射关系这一部分的内容,我留下了外键相关的FluentAPI介绍,我打算在下一篇介绍。因为这部分的内容比较麻烦,而且使用率也相当高。

    2.8K21

    SQL笔记(1)——MySQL创建数据库

    因为外键约束的作用是确保参考表中的某一列值必须存在于当前表的某一列中,所以参考表中的该列必须设置为唯一的且非空。...主键是一种用于唯一标识关系型数据库表中每一个记录的一列或若干列(确保它们的组合值在整个表中是唯一的)。...主键所包含的列必须满足数据每一行都具有唯一性和非空性的条件,主键通常用于对表进行数据的查询、更新和删除操作。在表中,主键是通过具体的列值来定义的,而不是定义在表上的某个独立的约束。...主键约束可以约束非主键列吗 在关系型数据库中,主键约束是一种为了保证表中主键列的唯一性和非空性而应用于主键列上的一种约束。因此,主键约束只能应用于表中的主键列,而不能应用于其他的列。...唯一约束:可以确保表中某一列的值是唯一的,也可避免特定列出现空值。 非空约束:可以确保表中的某一列不为空。 检查约束:可以定义额外的规则来确保某一列或多个列的数据值符合规定。

    3.1K20

    二十六、唯一索引

    一、唯一索引 在 MySQL 中,使用 UNIQUE 关键字创建唯一索引。普通索引允许被索引的列中包含重复值,但是唯一索引不允许被索引列中包含重复值。...定义唯一索引的语法如下: CREATE UNIQUE INDEX indexName ON tableName(columnNme(length)); 注意: 如果表中的某列不允许出现重复值,就应该对其创建唯一索引...如,手机号,身份证号等; 可以将唯一索引作用域一个或多个列上,这些列或列的组合必须唯一; 同一张表允许创建多个唯一索引; 唯一索引的列允许空值; 使用 INSERT 和 UPDATE 向唯一索引列生成重复值会报错...例如: 在 student 表中为 phone 列创建唯一索引 create unique idx_phone on student(phone);

    40020

    二十五、唯一索引

    一、唯一索引 在 MySQL 中,使用 UNIQUE 关键字创建唯一索引。普通索引允许被索引的列中包含重复值,但是唯一索引不允许被索引列中包含重复值。...定义唯一索引的语法如下: CREATE UNIQUE INDEX indexName ON tableName(columnNme(length)); 注意: 如果表中的某列不允许出现重复值,就应该对其创建唯一索引...如,手机号,身份证号等; 可以将唯一索引作用域一个或多个列上,这些列或列的组合必须唯一; 同一张表允许创建多个唯一索引; 唯一索引的列允许空值; 使用 INSERT 和 UPDATE 向唯一索引列生成重复值会报错...例如: 在 student 表中为 phone 列创建唯一索引 create unique idx_phone on student(phone);

    35440

    MySQL索引篇,索引的优缺点,分类及设计原则

    3.当对表中的数据进行增加,修改,删除的时候,索引也要同时进行维护,降低了数据的维护速度。 ? 索引的分类 1.普通索引(Normal):基本索引类型,允许在定义索引的列里插入空值或重复值。...2.唯一索引(Unique):索引列值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。主键索引是一种特殊的唯一索引,不允许有空值。...3.单列索引:只包含一个列的索引,一个表中可以有多个。 4.组合索引:包含多个列的索引,查询条件包含这些列的最左边的字段的时候,索引就会被引用,遵循最左缀原则。...5.全文索引(Full Text):在定义的值中支持全文查找,允许空值和重复值,可以在CHAR,VARCHAR或者TEXT字段类型上创建,仅支持MyISAM存储引擎。...4.不同的值比较多的列才需要建立索引。 5.某种数据本身具备唯一性的时候,建立唯一性索引,可以保证定义的列的数据完整性,以提高查询熟度。

    2K20
    领券