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

Entity Framework Core 2.0 新特性

前言 Entity Framework Core 2.0更新也已经有一段时间了,园子里也有不少的文章.. 看了下2.0的新特性基本算是完成了我之前发布的路线图的内容 很不错 下面就介绍一下新特性....(本文的英文原文地址:这里) 1.实体方面的新内容     1.1表拆分      现在可以将多个实体类型映射到将要共享主键列的同一个表,并且每一行将对应于两个或多个实体。    ...包含定义导航的实体是所有者。当查询所有者时,默认情况下将包含所有类型。 按照惯例,将为所属类型创建一个影子主键,并通过使用表分割将其映射到与所有者相同的表。...,并将更多的逻辑生成SQL让它在数据库中执行(而不是内存中),并且从数据库中检索更少的不必要的数据。...EF.Functions属性(注意,这里应该是可以扩展的,添加更多的数据库方法),EF Core可以使用它们来定义映射到数据库函数或操作符的方法,以便可以在LINQ查询中调用它们。

3.9K90

基于Entity Framework 6的框架Nido Framework

随着 Entity Framework 最新主版本 EF6 的推出,Microsoft 对象关系映射 (ORM) 工具达到了新的专业高度,与久负盛名的 .NET ORM 工具相比已不再是门外汉。...首先,从 .NET Framework 中提取所有的 Entity Framework API,并与团队同时正在开发的非常规功能 API 组合在一起。 其次,整个开发工作改用了开源模型。...几乎您原先掌握的所有 EF 技能都没有变化,例如如何生成 Entity Framework 模型以及如何在您的应用程序中使用 EF。...尽管 EF6 是在 ORM 基础上发展而来的,但是并没有改变它根本的工作方式。 如果您已经投入时间学习 EF,那么这种投入将不会白费。...正如我刚才提到的,EF6 的 EF API 是从 .NET Framework 中提取的;它们现已完全封装在 NuGet 程序包中。

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

    从头编写 asp.net core 2.0 web api 基础框架 (4) EF配置

    简单的情况下,ORM可以把数据库中的表和Model对象一一映射起来;也有比较复杂的情况,ORM允许使用OO(面向对象)功能来做映射,例如:Person作为基类,Employee作为Person的派生类,...他们俩可以在数据库中映射成一个表;或者在没有继承的情况下,数据库中的一个表可能和多个类有映射关系。...Dto是与外界打交道的Model,entity则不一样,有一些Dto的计算属性我们并不像保存在数据库中,所以entity中没有这些属性;而数据从entity传递到Dto后某些属性也会和数据库里面的形式不一样...不过迁移之前,我们先看看Product这个表的具体字段属性: ? Product的Id作为了主键,而Name这个字符串的长度是max,而Price没有精度限制,这样不行。...我们需要对Model生成的表的字段进行限制! 解释一下:Product这个entity中的Id,根据约定(Id或者ProductId)会被视为映射表的主键,并且该主键是自增的。

    2.3K70

    Google Cloud Spanner的实践经验

    在最初的时候,Cloud Spanner是被设计为NoSQL的键值对的方式存储,但随着其对关系模型的需求被添加后,Cloud Spanner逐渐打破了NoSQL和SQL数据库之间的壁垒。...表结构的更新 Cloud spanner支持对现有的数据库架构执行以下更新操作: 新建表。新表格中的列可以为 NOT NULL。 删除一个表,前提是该表内没有交错其他表,并且没有二级索引。...将一个非主键列添加到任何表,新的非主键列不能为 NOT NULL。 将 NOT NULL 添加到非主键列,不包括 ARRAY 列。 从非主键列中移除 NOT NULL。...Cloud Spanner在保证关系型数据库管理系统的特性前提下,同时提供数据库的超强延展性,并且可以在特定情况下对已存在的表的表结构进行结构更新。...并且因为Cloud Spanner支持用户在不停机的情况下对数据库进行水平或垂直的缩放(由Cloud Spanner自动管理数据切片和数据复制)或对表结构进行更新例如添加索引等操作。

    1.5K10

    使用CodeFirst创建并更新数据库

    EF6和MYSQL数据库,所以要在项目中添加对Mysql.Data.Entity.EF6以及EntityFrameword 6.0的引用。...虽然我们没有为DbContext添加Blog类型的属性,但依然创建了数据表T_Blogs,这是因为在Author类中定义了Blog类型的属性,若我们注释掉 public virtual ICollection...在生成T_Authors表的同时,会生成一张名为_migrationhistory表,这张表用于记录我们对于数据库的更新日志,表中的MigrationId字段的值是我们每次执行Migration时所生成的文件名...如果尚未创建数据库,则不会将此 InitialCreate 迁移添加到项目中。而是,首次调用 Add-Migration 时,用于创建这些表的代码将为新迁移搭建基架。...,但数据库中并不存在我们新指定的数据表和字段,这会导致程序报错。

    2.7K40

    生成数据库

    简单的情况下,ORM可以把数据库中的表和Model对象一一映射起来;也有比较复杂的情况,ORM允许使用OO(面向对象)功能来做映射,例如:Person作为基类,Employee作为Person的派生类,...他们俩可以在数据库中映射成一个表;或者在没有继承的情况下,数据库中的一个表可能和多个类有映射关系。...Dto是与外界打交道的Model,entity则不一样,有一些Dto的计算属性我们并不像保存在数据库中,所以entity中没有这些属性;而数据从entity传递到Dto后某些属性也会和数据库里面的形式不一样...不过迁移之前,我们先看看Product这个表的具体字段属性: Product的Id作为了主键,而Name这个字符串的长度是max,而Price没有精度限制,这样不行。...我们需要对Model生成的表的字段进行限制! 解释一下:Product这个entity中的Id,根据约定(Id或者ProductId)会被视为映射表的主键,并且该主键是自增的。

    1K20

    Django新增数据

    因为在你调用 save() 之前,没有办法表中的 id 的值应该是多少,因为这个值是由你的数据库计算出来的,而不是由 Django 计算出来的。...save()方法也被用来更新数据,如前所述,如果你在保存新对象的时候指定了主键的值,如果这个值在数据库中已经存在,那么插入操作,就变成了更新操作。...Django 确保在你的模型类中至少指定了一个默认的 Manager。如果你没有添加自己的 Manager,Django 会添加一个属性 objects,包含默认的 Manager 实例。...如果添加自己的 Manager 实例属性,则不会出现默认的。 Manager 是一种接口,它赋予了 Django 模型操作数据库的能力。...如果必须使用手动主键,那么要做好处理异常处理。和save()一样,通常情况下,不要去指定主键的值。

    78630

    PostgreSQL 分区表为什么要带 pg_pathman 过时了?

    其中包含的信息会有添加的需要分区的表名,分区的主键,分区类型,和分区的中例如如果是range 分区,其中包含range_interval....其中包含的信息会有添加的需要分区的表名,分区的主键,分区类型,和分区的中例如如果是range 分区,其中包含range_interval....其中包含的信息会有添加的需要分区的表名,分区的主键,分区类型,和分区的中例如如果是range 分区,其中包含range_interval....这里注意不建议打开auto ,在插入数据的时候如果发现数据没有落在range分区内会自动建立分区,但实际上如果横跨度很高的情况下,会大量建立分区表。...导致某些无法预料的问题 SELECT disable_pathman_for('partition_table'); 当决定不再使用pathman的情况下,可以使用上面的命令,将pathman从分区表中分离出来

    2.1K20

    flask框架(三)

    6.数据库关系查询relationship(掌握) 简化操作 解释:为了方便数据库的关联查询 特点: 1/不会在数据库产生实体字段 2/关系属性需要在一方添加,外键在多方 3/外键添加在一方,并且关系属性的使用需要依赖于外键...在程序中添加了上面的语句后,不需要重新执行,只需要把终端里面退出当前,再进入就好了.因为使用了relationship不会在数据库产生实体字段 使用格式(ipython3使用的): role = Role.query.get...(1) users=role.users 给role添加了一个users属性,那么查询的方式是role.users 7.数据库反向查询backref(掌握) 解释:/如果知道了用户的情况下,能否快速查询出...分析图书馆案例: 1/数据库配置() 1.1作者模型(一方) 1.2书籍模型(多方) 2/添加测试数据 3/添加作者/书籍 4/删除作者/删除书籍 10.图书馆测试数据添加(掌握) 1/为了演示的方便,...:当数据库的表结构发生变化之后,如果直接删除原有的数据,再添加新的数据,有可能导致数据丢失.做升级操作 注意点: 1/是为了备份表结构,而不是数据 2/如果想要备份数据,需要使用工具,Navicat,mysqlworkbench

    97030

    Entity Framework Core 2.0 新特性

    一.模型级查询过滤器(Model-level query filters)   ef core2.0包含了一个新特性,我们叫他模型级查询过滤器(Model-level query filters)。...六.表拆分(Table splitting)   现在可以将两个或多个实体类型映射到同一表,其中主键列将被共享,每一行对应两个或多个实体。   ...要使用表拆分,必须在共享表的所有实体类型之间配置标识关系(外键属性构成主键) 示例代码: 1 modelBuilder.Entity() 2 .HasOne(e => e.Details...按照惯例,将为所属类型创建一个影子主键,它将通过使用表拆分映射到与所有者相同的表。...目前只支持标量函数 EF Core迁移将不负责创建它,您必须在数据库中创建映射函数 九.code first 实体配置   在EF6可以通过 EntityTypeConfiguraiton 封装特定实体类型的配置代码

    1.9K50

    在PowerDesigner中设计物理模型1——表和主外键

    使用逆向工程的方法,连接到现有的数据库,由数据库生成物理模型。 物理模型能够直观的反应出当前数据库的结构。在数据库中的表、视图、存储过程等数据库对象都可以在物理模型中进行设计。...添加的表是没有任何列的,如图所示: 单击工具栏的鼠标指针按钮,将鼠标切换回指针模式,然后双击一个表,系统将打开表属性窗口,在General选项卡中可以设置表的Name、Code等属性。...为教室表设计了两个列,如图所示: 主键 在设计一个表时,一般情况下每个表都会有一个主键,主键分为单列主键和复合主键。...”按钮,然后在设计面板中,课程表上按下鼠标左键,并拖拽到教师表中放开鼠标,这时如果课程表中没有RoomID列,系统会自动创建RoomID列并创建该列上的外键引用,如果已经存在RoomID列,则只添加外键引用...,不会再添加新列。

    2.1K10

    从MySQL到AWS DynamoDB数据库的迁移实践

    经过前期大量的调研,我们决定将 MySQL 中的部分表迁移到 AWS Dynamodb 中。本文主要介绍从关系型数据库平顺迁移到非关系型数据库的实践经验。...在此情况下,我们不得不开始考虑拆表或者数据库迁移,其中拆表的方法并不能长久地解决这个问题。同时为了提升性能以及扩展性、降低成本,我们最终选择将 asset 及其相关表迁移出 MySQL 数据库。...4 迁移方案设计 从关系型数据库转变到非关系型数据库,我们需要重新定义新的数据模型。在设计新模型时,主要需要考虑的是新表中每项数据的属性以及迁移后的数据模型能否继续支持原有的业务需求。...在对新的数据表结构以及模型定义完成后,我们还需要定义其中各种属性的主键以及根据我们的业务需求来定义其中的附加索引。...这个过程中我们发现 NoSQL 带来的性能提升还是很大的,比如原来在 MySQL 中一个更新需求涉及到多张表可能需要建立几个甚至更多的数据库链接,而在 DynamoDB 中只要一个数据库操作就能完成整条记录的更新

    8.6K30

    MySQL【知识改变命运】09

    定义 满足第一范式的基础上,不存在非关键字段(非主键字段)对任意候选键(主键,唯一键,用来标识数据行)部分依赖。存在与表中定义的复合主键(主键中包含多个列)的情况下。...候选键:可以唯⼀标识⼀⾏数据的列或列的组合,可以从候选键中选⼀个或多个当做表的主键 1.2.2....当有⼀⻔新课还没有学⽣参加考试取得成绩之前,那么这⻔新课在数据库中是不存在的,因为成绩为空时记录没有意义。...设计过程 从现实业务中抽象得到概念类 概念类是从现实世界中抽象出来的,在需求分析阶段就需要确定下来 ◦ 类对应了数据库设计中的实体,实体对应了数据库中的表 ◦ 类中的属性对应实体中的属性,实体的属性对应了表中的列...实体-关系图 实体-关系图(Entity-Relationship Diagram)简称E-R图,也称作实体联系模型、实体关系模型,是⼀种⽤于描述数据模型的概念图,主要⽤于数据库设计阶段。

    10710

    SpringDataJPA笔记(1)-基础概念和注解

    JPA注解 查询相关注解 @NoRepositoryBean 添加了该注解的 repository 接口不会在运行时被创建实例,只会作为其他接口的父接口而被使用 @Modifying (1)可以通过自定义的...默认情况下,JPA 自动选择一个最适合底层数据库的主键生成策略:SqlServer 对应 identity,MySQL 对应 auto increment。...@PrimaryKeyJoinColumn 在三种情况下会用到PrimaryKeyJoinColumn。 继承。 entity class映射到一个或多个从表。...从表根据主表的主键列(列名为referencedColumnName值的列),建立一个类型一样的主键列,列名由name属性定义。...是否允许插入 updatable: 是否允许更新 columnDefinition: 定义建表时创建此列的DDL secondaryTable: 从表名。

    4K20

    Core Data 是如何在 SQLite 中保存数据的

    rocketSim_get_URL 读者最好能在打开一个由 Core Data 生成的 SQLite 数据库文件的情况下继续阅读接下来的内容 基础的表与字段 所谓基础的表与字段是指,在没有启用其他附加功能...该字段与登记记录的 Z_ENT 一致。可以将其视为表的 ID 。 Z_PK 字段 从 1 开始递增的整数,可以将其视为表的主键。...在创建新的实体数据时,Core Data 将从 Z_PRIMARYKEY 表中找到对应实体最后使用的 Z_PK 值( Z_MAX ),在此值基础上加一,作为新记录的 Z_PK 值,并更新该实体对应的 Z_MAX...container.viewContext.save() // 除了在创建新的持久化存储时添加 metadata 外,其他情况下添加的数据都需要显式调用上下文的 save 方法来完成持久化 下图为将...字段名称为 Z + 关系名称(大写) 一对一 关系两端都添加新的字段,分别为对应数据的 Z_PK 值 多对一 关系两端都不添加新的字段,创建一个表示该多对多关系的新表,并在其中逐行添加关系两侧数据的 Z_PK

    1.6K20

    MybatisPlus常用注解

    1、雪花算法 默认情况下数据库的id列使用的是基于雪花算法的策略生成 背景 随着业务规模的不断扩大,需要选择合适的方案去应对数据规模的增长,以应对逐渐增长的访问压力和数据量。...两个字段主要用于展示,一般不会在业务查询中用到。...优点:可以随着数据的增加平滑地扩充新的表。例如,现在的用户是 100 万,如果增加到 1000 万,只需要增加新的表就可以了,原有的数据不需要动。 缺点:分布不均匀。...2、指定主键列 测试:将数据库表中的id列改为 uid,将实体类中的id属性改成 uid,执行数据插入,则报告如下错误 原因:因为MP默认认为id是主键列,其他名字的属性MP无法默认自动填充 解决方案:...为主键列添加 @TableId 注解 3、value属性 实体类的属性名是 id,数据库的列名是 uid,此时使用 value 属性将属性名映射到列名 @TableId(value = "uid") private

    25910

    EntityFramework快速上手

    EF有三种使用场景: 从数据库生成Class, 由实体类生成数据库表结构, 通过数据库可视化设计器设计数据库,同时生成实体类。 O/RM是什么?...EDM (实体数据模型):EDM包括三个模型,概念模型、 映射和存储模型。 概念模型 ︰ 概念模型包含模型类和它们之间的关系。独立于数据库表的设计。...存储模型 ︰ 存储模型是数据库设计模型,包括表、 视图、 存储的过程和他们的关系和键。 映射 ︰ 映射包含有关如何将概念模型映射到存储模型的信息。...Object Services(对象服务):是数据库的访问入口,负责数据具体化,从客户端实体数据到数据库记录以及从数据库记录和实体数据的转换。...实例创建实体数据模型 使用向导创建实体类,或键添加,傻瓜式的~

    1.9K50
    领券