首页
学习
活动
专区
圈层
工具
发布

EF 约定介绍

,该集合属性里面的元素是另一个实体时,则默认未一对多关系,即使没有显示的指定一对多的关系,EF会默认的设置主外键(主从)关系 (3)、一对一的实体关系,需要手动设置主从关系 (4)、多对多无载荷关系实体...知道哪些类型包含在当前模型中,因此,我们需要自定义一个ZdyNameDbContext,并继承DbContext,并在自定义DbContext中暴露需要暴露的类型,这样在Code First开发模式中,...) Convention EF中,两个实体间的关系是通过导航属性的方式来实现,每一个对象都能拥有一个它所参与的关系的导航属性,导航属性提供了一种方式在两端来操作这个关系来获取我们需要的数据,可以返回任何一方的引用对象.... (2)、当关联实体的外键属性被设置为不为空,Code First会设置级联删除,反之不会。...5、复杂类型约定(Complex Types Conventions) 如果Code First无法从类型中推测出主键,也没有通过Data Annotations或者Fluent Api进行注册的主键,

2.4K100

Entity Framework 系统约定配置

在EF中是以一种约定的方式进行表、列同实体类进行映射的,与此同时为了提高最大的灵活性EF中可以通过Fluent API和Data Annotations两种方式对映射进行灵活配置。...;如果不存在外键属性则外键关系注册为可选的,否则注册为必选项并且此时将设置级联删除关系;如果在从表类中有多个导航属性对应同一个数据类那么需要使用fluent API或者Data Annotations进行手动配置...直接将建立一个级联删除关系。...4.当EF按照上述规则在数据类中没有找到主键属性时(或者通过fluent API、Data Annotations没有定义)将认为此类为“复杂类型”。   ...在EF提供了两种方式进行映射配置:Data Annotations和Fluent API。

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

    Fluent NHibernate之旅(四)-- 关系(中)

    接着上一篇,我们继续讲解ORM中的关系。在数据库设计中,我们最多打交道的,要算一对多关系了,延续我们的示例,我们来讲解一下一对多的关系。...Mapping 四、一对一映射:One-to-One Mapping 场景和数据库设计 延续我们的演示范例,用户和订单是非常典型的一对多范例。...一对多的映射,比起一对一来说还相对的简单点,默认是延迟加载,如果项目中,有些地方,需要立即加载,我们也可以使用 FetchMode.Eager 来加载。...我们在Output中,能看到NHibernate生成的Sql语句,测试也成功,说明我们刚刚是立即加载了Orders属性。...总结 总体来说,一对多的映射比较简单点,不过我们今天只是说了一般的情况,但如果我们遇到级联更新、级联删除等,就会遇到一些问题,在后续文章中会慢慢道来。

    1.1K100

    01-EF Core笔记之创建模型

    如果你想改变默认值,很简单,EF Core提供了Fluent API或Data Annotations两种方式允许我们定制数据模型。...注意:如果CLR中属性不能为null,则无论如何配置都将为必填。 也就是说,如果能为null,则默认都是可空字段,因此在配置时,只需要配置是否为必填即可。...使用乐观的并发控制可提高数据库性能。 按照约定,EF Core不会设置任何并发控制的令牌字段,但是我们可以通过Fluent API或数据标注进行配置。...在数据库中,数据表之间的关系可以分为一对一、一对多、多对多三种,在实体之间同样有这三种关系,但是EF Core仅支持一对一、一对多关系,如果要实现多对多关系,则需要通过关系实体进行关联。...继承 关于继承关系如何在数据库中呈现,目前有三种常见的模式: TPH(table-per-hierarchy):一张表存放基类和子类的所有列,使用discriminator列区分类型,目前EF Core

    3.9K20

    EntityFramework Core 学习扫盲

    添加实体和映射数据库 使用EF CORE中添加实体,约束属性和关系,最后将其映射到数据库中的方式有两种,一种是Data Annotations,另一种是Fluent Api,这两种方式并没有优劣之分,全凭开发者喜好和需求...包含和排除实体类型 将实体在Context中映射到数据库有多种方式: 使用DbSet定义属性。 在OnModelCreating方法中使用Fluent Api配置。...在Fluent Api中,有两种方法可以指定备用键,一种是当开发者将实体中的属性作为另一个实体的外键目标,另一种是手动指定。EF CORE的默认约束是前者。...继承 继承通常被用来控制实体类接口如何映射到数据库表结构中。在EF CORE 当前版本中,TPC和TPT暂不被支持,TPH是默认且唯一的继承方式。...以下内容用代码的方式给出了一对一,一对多和多对多的关系,两边关系设为不可空。其实可空不可空的控制十分简单,只要注意是否需要加上IsRequired的扩展Api即可。

    10.5K90

    Entity Framework 约定

    约定,类似于接口,是一个规范和规则,使用Code First 定义约定来配置模型和规则。在这里约定只是记本规则,我们可以通过Data Annotaion或者Fluent API来进一步配置模型。...这时我们可以通过Fluent API 来忽略指定的模型映射到数据库中,代码写在EF上下文中: protected override void OnModelCreating(DbModelBuilder...二、关系约定 在数据库中,我们可以通过多张表的关联查询出数据,这多张表之间的关联,就是他们的关系。同样,也可以在模型中定义这样的关系。...EF中定义关系要使用到导航属性,通过导航属性可以定义多个模型之间的关系。大部分情况下我们会将导航属性和外键属性结合在一起使用。...当EF检测出外键属性后,会根据外键属性是否为空来判断关系,如果外键可以为空,那么模型之间的关系将会配置成可选的,Code First 不会再关系上配置级联删除。

    1.7K10

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

    对于其他属性,EF会自动按照同名的形式映射到数据表中。 对于外键,如果在类里添加了引用类型,而这个引用类型也在EF的上下文中,EF会把这种属性称为导航属性。...如果类型不一致,EF则认为该类设置有误。如果没找到符合名称要求的属性,EF会自己添加一个外键属性。 对于一对一,EF要求导航属性双方都应该具有外键配置。 一对多,EF要求多的一方设置外键。...同时如果在一方这边设置了集合类型的导航属性,那么EF会自动到目标类里寻找外键属性。 说完了一对一和一对多,那么多对多呢? 如果没有声明的话, EF会生成一个中间表。 2....修改映射关系 EF允许开发人员指定自己的映射规则或者单个类的映射规则。EF 提供了几种方式来修改映射关系。 2.1 数据注解 EF允许开发人员通过使用Attribute标记,来约定映射关系。...2.2 Fluent 方式 当我们使用这种方式的时候,会面临一个问题:是新建一个配置类呢,还是在 EF上下文的OnModelCreating方法里统一配置呢?

    3.5K21

    EF Core 导航属性配置

    在上一篇,大概介绍了Entity Framework Core关于关系映射的逻辑。在上一篇中留下了EF的外键映射没有说,也就是一对一,一对多,多对一,多对多的关系等。...这一篇将为大家细细分析一下,如何设置这些映射。 1. 实体之间的关系 从数据表来考虑,两个表之前的关系有一对一,一对多(多对一)和多对多的关系。...意思就是无法定义一对一关系中的子/从属方 如何解决呢?之前在说的时候,EF会根据导航属性自动生成一个外键,但是这一条在一对一这里就有点不太起作用了。...所以我们必须手动在导航属性的一侧实体类里配置外键,并用 HasForeignKey指定。(如果不使用Fluent API,也是需要在一端实体类配置外键,另一端则不需要)。...在EF 6中 中间表可以仅存在于关系中,但是在EF Core3 还没有这个的支持。也就是当前文章使用的版本。 5. 附加 在EF的外键约束中,导航属性是默认可空的。

    4.1K20

    系统学习javaweb-10-Hibernate的配置与api操作

    关联映射、inverse控制反转、cascade级联操作、一对一、组件、继承 【package4】:com.csxiaoyao.session session缓存的使用 【package5...在一对多与多对一的关联关系中,保存数据最好的通过多的一方来维护关系,这样可以减少update语句的生成,从而提高hibernate的执行效率。...配置一对多与多对一:“双向关联” 只配置一对多:“单项一对多” 只配置多对一:“单项多对一” (配置了哪一方,哪一方才有维护关联关系的权限) 【Inverse控制反转属性】 Inverse...级联保存、更新、删除 4.3 多对多映射 维护关联关系 设置inverse属性,在多对多种维护关联关系的影响 1....,当用到数据的时候才向数据库查询 在真正使用数据的时候才向数据库发送查询的sql;调用集合的size()/isEmpty()方法,只是统计,不真正查询数据 【解决session关闭后使用懒加载数据报错

    1.3K20

    EF Core 入门

    在直接使用通过EF获取的元素时,EF会自动跟踪哪些字段发生了变化,当手动调用保存的时候,EF就会把数据回传给数据库。...可以延迟加载需要的数据,外键引用属性、查询结果等 丰富的映射关系,支持一对一,一对多,多对多,甚至继承、单表多实例等 可以使用Linq 进行查询 非Core版的可以通过数据库表生成实体类,两种都可以通过实体类生成表...EF可以使用Fluent式配置,也可以使用配置文件进行配置。 说了一大堆Entity Framework的优点,那么就让我们开始使用Entity Framework Core吧。...(); context.Dispose(); 这里简单的演示了一下如何使用,到目前为止EF Core可以满足了入门的开发。...当然,EF并不只有这些。下一篇将介绍如何自定义映射关系。

    3.7K10

    Hibernate学习笔记2

    一级缓存常用API 3.4. Hibernate常用API-Session补充 4.Hibernate关联映射-数据对象三种关系介绍 4.1. 一对一 4.2. 一对多(多对一) 4.3....,与session关联,在删除 注意:如果执行delete操作,先删除一级缓存,在删除数据库中的数据。...一对多(多对一) 客户与订单之间一对多关系(多对一) 建表原则:在多的一方添加外键来描述关联关系 ?...关于inverse的取值: 外键在哪一个表中,我们就让哪一方来维护外键。 5.6. 对象导航 ? 5.7. 级联删除 我们在删除客户时,也要删除订单,如果没有做级联,那么这个操作是不允许。...完成操作,级联保存临时对象,如果是游离对象,会执行update. delete 级联删除 delete-ophan 删除与当前对象解除关系的对象。

    1.8K40

    【Java关系映射入门】实战二

    级联: 级联操作(尤其是 CascadeType.ALL)在一对一中更常用(如 User 级联保存/删除 UserProfile)。但删除仍需根据业务逻辑谨慎处理。...: 在双向关联中,必须在一方使用 mappedBy。...级联: 极其谨慎使用级联删除 (CascadeType.REMOVE 或 ALL)。 删除一个 Student 级联删除其关联的所有 Course 会删除其他学生选的课!...通常只在关联实体是私有组合的一部分时才考虑级联删除。级联保存 (PERSIST) 可能安全(保存学生时自动保存其新添加的课程)。...mappedBy 理解透彻: 它是区分关系维护方(拥有方,负责外键/关联表更新)和非维护方的关键。在 @OneToMany 和双向 @ManyToMany 中必须正确使用。

    11410

    EF基础知识小记五(一对多、多对多处理)

    本文主要讲EF一对多关系和多对多关系的建立 一、模型设计器 1、一对多关系 右键设计器新增关联 导航属性和外键属性可修改 2、多对多关系 右键设计器新增关联 模型设计完毕之后,根据右键设计器根据模型生成数据库...FK_StudentTeacher_Student] foreign key (StudentId) references Student (Id) on delete no action on update no action --级联更新级联删除...,根据数据库生成模型就能生成对应的模型 三、多对多无载荷 根据上面的建表语言,我们能得出Teacher表和Student表在数据库中的关系如下图: 数据库关系图: 在模型设计器中的关系如下图: 模型设计图...: 观察二图的区别,发现数据库表关系图中的StudentTeacher(链接表)没有出现在模型设计器中。...如果你有一个无载荷的多对多关系时,你可以考虑通过增加一标识列将其改变为有载荷的多对多关系。

    2.7K80

    day30_Hibernate复习_02(补刀)

    二、多表设计:一对多 和 多对一  一对多的表达:     在数据库表中如何表达一对多关系:在多的一方的表中加入外键,引用的是一的一方的主键。     ...在对象中如何表达一对多关系:在一的一方使用集合表达持有多的一方,在多的一方引用一的一方的对象。     ...在配置文件中如何表达一对多关系: 一方:                    多的一方的外键名称" />...name="多的一方属性的引用名称" column="多的一方的外键名称" class="一的一方所属对象的完整类名" /> 一对多的操作:     inverse:一的一方要不要放弃维护外键关系...,默认值是:false     cascade:取值有:       save-update    级联保存和级联修改       delete    级联删除

    49720

    阿里又来卷啦,一款比 Mybatis 更牛的框架....

    使用 Fluent Mybatis 可以不用写具体的 XML 文件,通过 Java API 可以构造出比较复杂的业务 SQL 语句,做到代码逻辑和 SQL 逻辑的合一。...不再需要在 Dao 中组装查询或更新操作,在 XML 或 Mapper 中再组装参数。...使用 Fluent Mybatis 来实现上面的功能 : 我们可以看到 fluent api 的能力,以及 IDE 对代码的渲染效果。...API 的编码效率更高语法渲染特点无通过关键变量 select, update, set, and, or 可以利用 IDE 语法渲染, 可读性更高 Fluent Mybatis 实战 接下来,我们来看看如何使用..., 一对多, 多对多)关系的接口 Ref : 引用 Fluent Mybatis 生成的对象的快捷入口工具类 总结 上面只是 Fluent Mybatis 常规实现增删改查的方式,Fluent

    82321
    领券