首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Entity Framework 约定

EF检测出外键属性后,会根据外键属性是否为空来判断关系,如果外键可以为空,那么模型之间的关系将会配置成可选的,Code First 不会再关系上配置级联删除。...,该模型将会自动被配置为复杂类型,检测复杂类型时要求该类型没有引用实体类型的属性。...自定义约定可以看作全局约定规则,将会运用到所有实体和属性,也可以显示实现应用到指定的模型上。...自定义约定包含一个约定接口 IConvention,IConceptualModelConvention 是概念模型接口,在模型创建后被调用,IStoreModelConvention 接口为存储模型接口,在模型创建之后用于操作对模型的存储...,***自定义类约定***都必须在 OnModelCreating 方法中显式配置,例如我们要将模型中类型为DateTime的属性映射为datetime2,可进行如下配置: public class DateTime2Convention

1.3K10

【愚公系列】2023年02月 .NETC#知识点-使用控制台手搭webapi框架

文章目录 前言 一、使用控制台手搭webapi框架 1.配置文件 2.控制台配置 二、EFCore框架DBSet配置详解 1.实体统一配置 2.实体继承统一接口 3.获取程序集所有类 4.批量注入模型类到...EF中 三、EFCore框架表配置详解 1.配置基类, 2.实体表统一配置 3.DBContext中应用配置 四、仓储配置 1.仓储基类 2.仓储实现类 五、Autofac配置 1.注入DBContext...它可以用于处理数据,访问数据库,处理图像和视频,以及进行其他高级功能。...LibraryDbContext和EFCoreEleganceUseEFCoreModule,下面着重详解 二、EFCore框架DBSet配置详解 1.实体统一配置 EF实体继承统一的接口,方便我们反射获取所有...EF实体,接口可以设置一个泛型,来泛化我们的主键类型,因为可能存在不同的表的主键类型也不一样。

1.5K10

Entity Framework 一对多关系映射

EF中关系映射也是一个很关键的内容,关系映射和属性映射一样,也是在 OnModelCreating配置映射。...EF中的关系映射有如下三种: One-to-Many Relationship(一对多) Many-to-Many Relationship(多对多) One-to-One Relationship(一对一...) 我们今天先讲解 One-to-Many Relationship(一对一关系) 零、创建所需类 所有实体类公用的抽象基类 public abstract class Base { public...(modelBuilder); } 注1:在实际项目中需要编写很多的实体类,如果将所有实体类的映射直接写在 OnModelCreating 中会造成代码臃肿,不易维护,因此我们在这里将每个类的映射写在对应的映射文件中...,最后再将每个类的映射类注册到 OnModelCreating 中 注2:上述代码和描述是从客户的方向连编写的关系映射,如果以订单的角度来编写关系映射的话,只需删掉CustomerMap中的关系配置

96910

01-EF Core笔记之创建模型

使用EF Core的第一步是创建数据模型,模型建的好,下班走的早。EF Core本身已经设置了一系列约定来帮我们快速的创建模型,例如表名、主键字段等,毕竟约定大于配置嘛。...,而在EF Core中模型中为该实体类型定义的属性,这些类型只能通过变更跟踪器进行维护。...EF实体框架,它的实体会映射到关系型数据库中。所以通过关系型数据库的表之间的关系更容易理解实体的关系。...对应的关系配置如下: protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity...EF Core支持实体具有有参的构造函数,默认情况下,EF Core使用无参构造函数来实例化实体对象,如果发现实体类型具有有参的构造函数,则优先使用有参的构造函数。

3K20

EF Core索引

尽管它们在数据存储中的实现可能会有所不同,但也可用于基于列(或一组列)更高效地进行查找。 不能使用数据批注创建索引。 ...EF Core 每个不同的属性集仅支持一个索引。 如果使用 "熟知 API" 来配置已定义索引的属性集的索引(按照约定或以前的配置),则会更改该索引的定义。 ...如果要进一步配置由约定创建的索引,则此操作非常有用。 索引唯一性 默认情况下,索引不唯一:允许多行具有与索引的列集相同的值。 ...() .HasIndex(b => b.Url) .IsUnique(); } 尝试为索引的列集插入多个具有相同值的实体将导致引发异常。...Blog>() .HasIndex(b => b.Url) .HasFilter("[Url] IS NOT NULL"); } 当使用 SQL Server 提供程序 EF

1.5K10

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

映射规则 通过简单的示例,我们可以看到EF的映射规则是什么。基于约定由于配置的原则,EF实体类当做是一个单数形式的类型描述,把表认为是实体类的集合,所以表名为类名的复数形式。...对于主键,默认情况下EF会检索实体类有没有名为Id或者类名+Id的属性,如果有EF则认为这个属性是主键,否则会认为该类没有设置主键。EF检索到主键的类型是数字类型的话,会自动添加自增长的约束。...如果类型不一致,EF则认为该类设置有误。如果没找到符合名称要求的属性,EF会自己添加一个外键属性。 对于一对一,EF要求导航属性双方都应该具有外键配置。 一对多,EF要求多的一方设置外键。...2.2 Fluent 方式 当我们使用这种方式的时候,会面临一个问题:是新建一个配置类呢,还是在 EF上下文的OnModelCreating方法里统一配置呢?...我们先看一下EF上下文的OnModelCreating的声明是什么: protected internal virtual void OnModelCreating(ModelBuilder modelBuilder

2.7K21

关于EF Code First模式不同建模方式对建表产生的影响

今天在学EF Code First模式的时候,发现几个很有趣的问题,问题如下: 1、当编写玩实体后,不指定任何主键约束,EF会找长的最像Id的,然后设置其为主键,验证代码如下: //User类...结论:发现EF在我没有指定那个是主键的情况下,将UserId设为了主键 2、当一个实体中有两个带Id的字段,EF会将最像Id的设为主键,优先级  Id>UserId>UserId_Id class User...EF将Id设为了主键,UserId和UserId_Id的优先级自行验证. 3、关于外键的问题,当在实体中加入导航属性,EF生成外键可能会当前实体中的其他字段的影响.验证代码如下: class PhotoInfo...EF生成了一个User_Id的外键属性,关联User表 下面修改PhotoInfo实体,代码如下: class PhotoInfo { public Guid Id {...EF不再自动生成外键字段,而是将UserId属性设为了外键. 以上都是我测试出来的关于EF默认的行为,比较片面,欢迎指正.

94560

EF 一对一、一对多、多对多配置语句小记

数据库实体间的关系无非有这么几种:一对一、一对多、多对多,这些关系在EF框架中分别有不同的创建方式: 1、在"Database First"模式中,这些关系通过SQL语句的方式建立 2、在"Model...First"模式中,这些关系很简单,通过设计器就能简单搞定,实体简单的关联和数据库表之间的关联,都由EF框架帮我们生成 3、在"Code First"模式中,这些关系则是通过OnModelCreating...()来实现,也就是通过代码的方式来实现 本文主要分析"CodeFirst"中上面这些关系的建立.上述的对应关系,"Code First"在实体定义关系上有一下约定: 一、一对一(单向) 在Code First...中,一对一关系,是要通过代码来配置(当然不只是一对一关系,所有的约束,关系,都需要通过代码来配置),通过代码配置的方式有两种,一种是在OnModelCreating方法中配置即FluentAPI中配置,...另一种是DataAnnotations直接在实体类上面设置即特性标签.

1.9K70

Entity Framework 4.1 Code-First 学习笔记

EF 访问实体的子实体的时候是如何工作的呢?你的集合是 POCO 的集合,所以,在访问的时候没有事件发生,EF 通过从你定义的实体派生一个动态的对象,然后覆盖你的子实体集合访问属性来实现。...同样的道理,当你获取一个实体的时候,即使所有的属性都是 null ,EF4.1 也将会创建一个复杂类型的对象。...DbContext.Database.SqlQuery:这个方法将返回的数据集映射到相应的对象,而不去管这个对象是不是实体。重要的是 EF 不会跟踪返回的对象,即使他们是真正的实体对象。   ...DbSet.SqlQuery:这个方法返回的实体将会被 EF 跟踪修改,所以,如果你在这些返回的实体上做了修改,当 DbContext.SaveChanges 被调用的时候,将会被处理。...另外一个 EF 映射管理的方法是使用 Entity SQL,这种方式是 EF实体模型转换为物理模型,然后将Linq查询添加到物理模型中,最后将物理模型转换为数据库存储的查询。

1.6K10

《ASP.ENT Core 与 RESTful API 开发实战》-- (第5章)-- 读书笔记(上)

5.2 使用 EF Core EF Core 有两种使用方式: 代码优先:根据先创建好的实体类来创建数据库和表 数据库优先:根据先创建好的数据库以及其中的数据表来生成与之匹配的实体类 创建一个新项目时...,通常建议使用“代码优先”的方法,如果使用“数据库优先”,可以通过以下命令生成数据库对应代码 Scaffold-DbContext 代码优先,创建实体类 namespace Library.API.Entities...UseSqlServer 之前需要添加引用 Install-Package Microsoft.EntityFrameworkCore.SqlServer 在 appsettings.json 文件的一级节点下增加配置...update --global dotnet-ef 接着将迁移应用到数据库中 dotnet ef database update 命令执行成功之后,数据库就创建成功了 添加测试数据,在 LibraryDbContext...中重载 OnModelCreating 方法 protected override void OnModelCreating(ModelBuilder modelBuilder) { base.OnModelCreating

1.1K20

EF 约定介绍

当前环境为EF Code First开发模式中 一、EF默认约定 1、常用约定 (1)、当没有显示指定实体主键的时候,EF会默认将长得最像Id的属性(且类型为GUID)设为主键 (2)、设计实体时,当一个实体包含一个集合属性...,该集合属性里面的元素是另一个实体时,则默认未一对多关系,即使没有显示的指定一对多的关系,EF会默认的设置主外键(主从)关系 (3)、一对一的实体关系,需要手动设置主从关系 (4)、多对多无载荷关系实体...,EF自动生成中间表,不需要新增实体来表示. (5)、表名默认复数化 2、类型发现约定(Type Discovery) 使用EF开发,往往是以定义一些模型类开始,定义完这些模型类之后,需要让DbContext...(DbModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); }...} 3、主键约定(Primary Key Convention) 当没有显示指定实体主键的时候,EF会默认将长得最像Id的属性(且类型为GUID)设为主键,如果类中的属性(Property)名称为 ID

1.6K100

张高兴的 Entity Framework Core 即学即用:(一)创建第一个 EF Core 应用

为控制台应用,用于实践 EF Core 的有关操作;Pandemic.Models 为类库,用于提供数据库上下文和实体类。...(ModelBuilder modelBuilder) { } } OnConfiguring() 方法用于配置数据库的一些设置,比如连接字符串、日志等: protected override void...最优的解决方案是不使用密码进行身份验证,或是通过读取外部配置文件,这样也便于程序的维护。 OnModelCreating() 方法用于配置数据库表与实体类之间的映射。...DbSet 是用于修改和查询实体的数据,对 DbSet 的 LINQ 查询会转换为对应数据库表的查询。...从数据库中查询 将实体配置完关系以及创建数据库上下文后,就可以通过实例化数据库上下文对数据库进行操作。

2.4K10
领券