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

Entity Framework Core 2.0 新特性

(本文的英文原文地址:这里) 1.实体方面的新内容     1.1表拆分      现在可以将多个实体类型映射到将要共享主键列的同一个表,并且每一行将对应于两个或多个实体。    ...CLR类型,但是由于CLR类型不能被识别,所以必须从另一个实体类型导航到它。...包含定义导航的实体是所有者。当查询所有者时,默认情况下将包含所有类型。 按照惯例,将为所属类型创建一个影子主键,并通过使用表分割将其映射到与所有者相同的表。...3.3FromSql和ExecuteSqlCommand中的字符串插值 C#6(C#6.0特性请移步:这里)中引入了字符串插值,这是一个允许C#表达式直接嵌入到字符串文字中的功能,提供了一种在运行时构建字符串的好方法...这种新的支持允许以“安全”的方式使用C#字符串插值。这样就可以防止在运行时动态构建SQL时发生的常见SQL注入攻击.

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

    打造轻量级的实体类数据容器

    但是,这些“数据容器”还是显得比较重量级,里面有太多要交互的子对象,为此我在PDF.NET(PWMIS数据开发框架)中定义了一个非常轻量级的实体数据容器,它存储数据的原则很简单,就是一个object[]...另外,还提供了一个将数据映射到PDF.NET实体类的方法,下面是方法的定义: ///          /// 将数据从容器中映射到实体中         /// ...先看一个例子,我们假设系统中还存在一个实体类 Group,我们使用PDF.NET的OQL表达式写一个支持两个实体连接查询的语句: OQL q=OQL.From(user)          .InnerJoin...) //选取指定的字段 下面就可以映射出两个实体集合了: EntityContainer ec = new EntityContainer(q, db);             ec.Execute(...有关OQL的多实体连接查询仅在PDF.NET框架V4.1以后版本支持,该功能作为框架的一项重要功能扩展,已经在商业项目中开始使用,感兴趣的朋友可以一起研究。

    709100

    EF基础知识小记一

    (不匹配、阻抗失配,微软的安德斯.海尔斯伯格C#之父>可能会这样叫它),为了解决这个失配,大多数项目中都会引入"数据处理层"来转换应用程序实体层的数据到数据库的行和列中,随着"数据处理层"的不断进化,...,在代码优先(Code First)中,存储过程支持更新,性能改进,以及一系列的新特性,本书将聚焦这些新特性 4、模型 实体框架是一个强烈关注建模的技术,实体框架创建的是实体数据模型(EDM)的模型,它允许你在编码时使用强类型的实体类...当然,你能看到上图中的Location表,你能很容易的将它映射到单一的实体类,也这是实体框架的默认行为。   ...(Code First).概念层的语法是通过概念架构定义语言(CSDL)来定义的 映射层:映射层定义概念层和存储层之间的映射,该层定义类的属性如何映射到数据表中的列.映射规格语言(MSL)来定义 存储层...:将应用程序中的对象映射到某一存储系统中,实体框架中的数据模型定义表、列,关系以及映射到底层数据库中的数据类型.存储架构定义语言(SSDL)定义了存储模型的语法。

    1.7K90

    从零实现ORM框架GeoORM-对象表结构映射-02

    当然,不同数据库之间的差异远远不止这两个地方,随着 ORM 框架功能的增多,dialect 的实现也会逐渐丰富起来,同时框架的其他部分不会受到影响。...额外的约束条件(例如非空、主键等) —— 成员变量的Tag(Go 语言通过 Tag 实现,Java、Python 等语言通过注解实现) 举一个实际的例子: type User struct {...//Parse 根据对象实体和当前数据库对应的方言,解析得到当前视图映射到的表对象 func Parse(dest interface{}, d dialect.Dialect) *Schema {..., //先获取到当前字段类型反射对象,然后通过方言解析得到对象的数据库表的列类型 //reflect.New初始化一个当前类型的零值对象,返回一个指向该零值对象的指针 //Indirect...return &Session{ db: db, dialect: dialect, } } Session 成员变量新增 dialect 和 refTable 构造函数 New 的参数改为

    86820

    C# 动态创建类,动态创建表,支持多库的数据库维护方案

    一、创建表 SqlSugar支持了3种模式的建表(无实体建表、实体建表,实体特性建表),非常的灵活 可以多个数据库 MYSQL MSSQL ORACLE SQLITE PGSQL 等用同一语法创建数据库...(200).InitTables(typeof(CodeFirstTable1));//这样一个表就能成功创建了 /***手动建多个表***/ db.CodeFirst.SetStringDefaultLength...1.3、无实体建表 功能与实体建类一模一样,如果使用SqlSugar中间标准可以支持多个数据库一套代码建表 var type = db.DynamicBuilder().CreateClass("UnitEntityA...() 只要实体配置了数据库,就不要考虑换库了,直接使用,并且支持事务 四、过滤器 SqlSugar支持了全新的过滤器,可以是接口,集成该接口的类都生效,支持多表查询 db.QueryFilter ....1、ToList() 可以直接查询一个对象 2、First() 可以直接查单个对象 3、ToList(it=>it.Id) 可以查List一个字段集合 4、SelectStringJoin

    57910

    .NET(C#)有哪些主流的ORM框架,SqlSugar,Dapper,EF还是...

    .NET(C#)主流ORM总揽 今天这篇文章分享几款收集的目前.NET(C#)中比较流行的ORM框架,比如(以下框架均为开源框架,托管于github上): SqlSugar (国内) Dos.ORM (...特点: 开源、免费 推荐等级:★★★★☆ linq2db linq2db也是一款快速、轻量、类型安全的POCO对象和数据库映射的ORM框架。...从构架上来说,linq2db是对比如:Dapper、PetaPoco这个的微ORM的进一步封装,但它不像Entity Framework那样笨重。它没有实现状态跟踪,需要自己处理实体的状态更改等。...对象/关系数据库映射(object/relational mapping,ORM)这个术语表示一种技术,用来把对象模型表示的对象映射到基于SQL的关系模型数据结构中去。...推荐等级:★★★☆☆ 以上是笔者收集整理的部分目前.NET(C#)中流行的ORM框架。 如果你还有其他更好的ORM,欢迎留言,交流。 如果你觉得本文对你或者他人有帮助,请点个赞吧。

    8.5K90

    C# 数据操作系列 - 14 深入探索SqlSugar

    这时候就会与C#约定优于配置相违背,但是这也符合C#的设计哲学,因为配置也是C#的一部分。我们该如何从实际角度来完成表与实体类之间的关系建立呢?...tableDescription); 这是SugarTable的两个构造函数,允许设置表名和数据表描述 SugarColumn:用来定义属性与数据表中的列的关系 public string ColumnDataType.../demo.db", DbType = dbType, IsAutoCloseConnection = true, InitKeyType...OnLogExecuting是SqlSugar 的一个监听事件(虽然它不是事件,但我个人觉得写成事件模式比较好),作用是监控框架执行的SQL语句,可以用来调试或者做日志监控等。...总结 这一篇我们一起探索了如何自定义表和实体类之间的映射关系,下一篇将为大家写一个实用的模板类,包括数据库基本查询功能。以上是本篇内容,期待后续哦~

    2.1K30

    Linq基础知识小记四之操作EF

    ORM框架,旨在为Microsoft SQL Server数据库提供快速的应用程序开发,其优点是易于使用、简单、高性能. 2、EF实体类 EF允许我们使用任何类来表示数据(但是必须实现特定的接口来实现如导航属性等的功能...edmx我们可以完成一下功能: 1、映射一个表到多个实体 2、映射多个表到一个实体 3、通过ORM领域流行的三种标准策略来映射继承的类型 的三种标准策略包括: 表到层次类型:单个表映射到一个完整的类继承层次结构...,表中的一个类型辨别列用来指示每一行数据应该映射到何种类型....表到类型:单个表映射到单个类型,这意味这继承类型会被映射到多个表,当我们查询一个类似的entity时,EF通过连接(Join)来合并所有的基类型....(联结查询) 表到具体类型:单独的表映射到每个具体的类型,这意味着一个基类型将会被映射到多个表,当我们查询entity时,EF通过生成UNION(联结)来合并数据.

    2K60

    DDD领域驱动设计实战(三)- 理解实体

    受到DB和持久化框架影响,实体被该团队滥用,于是他们开始讨论如何避免大范围使用实体... 2 为什么使用实体 当我们需要考虑一个对象的个性特征,或需要区分不同对象时,就引入实体这个领域概念。...4.4 数据库形态 DDD是先构建领域模型,针对实际业务场景构建实体对象和行为,再将实体对象映射到数据持久化对象。 在领域模型映射到数据模型时,一个实体可能对应0个、1个或者多个数据库持久化对象。...有些复杂场景,实体与持久化对象可能是一对多或多对一: 一对多:用户user与角色role两个持久化对象可生成权限实体,一个实体对应两个持久化对象 多对一:有时为避免DB的联表查询,会将客户信息customer...和账户信息account两类数据保存至同一张数据库表,客户和账户两个实体可根据需要从一个持久化对象中生成 探索实体的本质 一开始团队便遇到陷阱,在Java代码中建模大量实体-关系。...在构造器对实例变量赋值时,它把操作委派给了实例变量所对应的setter方法,这样便保证了实例变量的自封装性。实例变量的自封装性使用setter方法来决定何时给实例变量赋值。

    1.5K32

    《Entity Framework 6 Recipes》翻译系列 (1) —–第一章 开始使用实体框架之历史和框架简述「建议收藏」

    很多年来,数据依然是保持在表、行、列这样模式里。不幸的是,它在面向对象继承和高度标准化的关系型数据库中产生了一个失配(阻抗失配,微软的安德斯.海尔斯伯格C#之父>可能会这样叫它)。   ...任何有用的应用程序都需要将对象持久化到某一数据存储系统中,实体框架中的数据模型定义表、列,关系以及映射到底层数据库中的数据类型。存储架构定义语言(SSDL)定义了存储模型的语法。   ...除此之外,该层定义实体类的属性如何映射到数据库表中的列。它在实体数据模型的映射详细信息窗口、数据注解、以及基于代码方式的API向开发人员呈现。它的语法由映射规格语言(MSL)来定义。...图1-3展示两个实体类型:Employee和Task. 图1-3 Employee和Task一对多关系的模型   一个实体类型一般拥有一个或多个属性。...每个实体类型都有一个属性或一个属性集来指示它的实体键。在实体框架中一个实体键唯一标识一个实体,一般它被映射到实体对应的底层数据库表的主键。

    1.4K20

    DDD领域驱动设计实战(三)-深入理解实体

    受到DB和持久化框架影响,实体被滥用,于是又开始讨论如何避免大范围使用实体... 2 为什么使用实体 当我们需要考虑一个对象的个性特征或需要区分不同对象时,就引入实体。...4.4 数据库形态 DDD先构建领域模型,针对业务场景构建实体对象和行为,再将实体对象映射到数据持久化对象。...在领域模型映射到数据模型时,一个实体可能对应0、1或多个数据库持久化对象: 大多数情况下实体与持久化对象是一对一 某些场景,有些实体只是暂驻静态内存的一个运行态实体,无需持久化 比如,基于多个价格配置数据计算后生成的折扣实体...有些复杂场景,实体与持久化对象可能是一对多或多对一: 一对多 用户user与角色role两个持久化对象可生成权限实体,一个实体对应两个持久化对象 多对一 有时为避免DB的联表查询,会将客户信息customer...和账户信息account两类数据保存至同一张数据库表,客户和账户两个实体可根据需要从一个持久化对象中生成 4.5 实体本质的探索 一开始在Java代码中建模大量实体关系。

    1.7K22

    DDD领域驱动设计实战(03)-深入理解实体

    受到DB和持久化框架影响,实体被滥用,于是又开始讨论如何避免大范围使用实体… 2 为什么使用实体 当我们需要考虑一个对象的个性特征或需要区分不同对象时,就引入实体。...4.4 数据库形态 DDD先构建领域模型,针对业务场景构建实体对象和行为,再将实体对象映射到数据持久化对象。...在领域模型映射到数据模型时,一个实体可能对应0、1或多个数据库持久化对象: 大多数情况下实体与持久化对象是一对一 某些场景,有些实体只是暂驻静态内存的一个运行态实体,无需持久化 比如,基于多个价格配置数据计算后生成的折扣实体...有些复杂场景,实体与持久化对象可能是一对多或多对一: 一对多 用户user与角色role两个持久化对象可生成权限实体,一个实体对应两个持久化对象 多对一 有时为避免DB的联表查询,会将客户信息...customer和账户信息account两类数据保存至同一张数据库表,客户和账户两个实体可根据需要从一个持久化对象中生成 4.5 实体本质的探索 一开始在Java代码中建模大量实体关系。

    64520

    MySQL数据库设计

    mysql:    dbs  数据库系统    bdms  数据库管理系统    bda   数据库管理员    db    数据库    dba通过dbms来操作db!...3.CreateNew = 1; 新建 Create = 2; Open = 3; OpenOrCreate = 4; Truncate = 5; Append = 6; 4.在C#中类只能有两个访问修饰符...二维表的形式表示实体和实体间联系的数据模型即关系模式  行:记录  列:字段 4.如何转化数据库模型图  使用PowerDesigner 软件  物理模型:  通过blog   绘制一个概念模型  然后...varchar(n)最多能存n个字节,一个中文是两个字节。 所占空间:   nvarchar(n)一个字符会占两个字节空间。   varchar(n)中文占两字节空间,英文占一个。...,如果字段的类型为varchar,则只会占用一个字节,而如果字段的类型为nvarchar,则会占用两个字节. 3.日期类型 DateTime

    2.6K110

    如何用ORM支持SQL语句的CASE WHEN?

    可以采用数据库视图或者表的计算列,但有些数据库可能不支持计算列; 前面3种原因,第2,3条方法也可以看做是此问题的解决方案,但是它们都需要增加更多的工作量,如果OQL能够直接支持还是更方便些,所以,我今天在这里给大家第...使用“计算属性”来支持CASE WHEN效果 前面说过,实体类的“计算属性”本质上不是一个“持久化属性”,它是对持久化属性的计算处理,原理上非常类似SQLServer表上面的计算列。...因此,在SOD框架上使用“计算属性”,有一个必须注意的原则:“计算属性”不可以出现在OQL语句中。...具体举例来说,应该像下面的样子来使用包含计算列的实体类: User user=new User(){ HName="张三"}; var q=OQL.From(user) .Select(user.HName...实际上,前面那个SOD实体类就是一种ViewModel,但它是基于实体类上的ViewModel,之外,SOD也支持直接将查询结果映射到ViewModel。

    2.1K80

    奇妙的NULL值,你知道多少

    (都可以为泛型类型)         (备注:C++,C#具有第三种类型:指针类型)        说明:值类型和引用类型的区别---值类型的变量直接包含了它们的数据,引用类型的变量只保存了指向它们数据的引用...(任何类型的值都可以被当作是一个对象)    2.编程语言中的NULL含义:       空的引用(变量只定义了,但未赋值),NULL与所有的引用类型都是兼容的,代表缺失某个实例。    ...3.数据类型中的NULL值意义:       (1).值类型:只要是可空值类型的值类型的值类型变量都可以包含NULL值;对于不可为空值的值类型,则有一个对应的可空值类型表示了和它相同的值的集合加上NULL...(2).Bool类型:在C/C++中,一个整数零或者浮点数零,或空指针,都可以表示成布尔值false,相反则为true;在c#和java中,转换必须通过显示地将整数或浮点数值和零比较,或者显示地比较对象引用和...获取数据库中的数据,SQL中的NULL被映射到Java(C#)中的null。

    2.4K50

    10分钟手撸极简版ORM框架!

    为了能够让小伙伴们更加深刻并且清晰的理解ORM框架的实现原理,冰河决定自己手撸一个极简版的ORM框架,让小伙伴们一看就能够明白什么是ORM框架?ORM框架到底是如何运行的?...@Table注解的实现 首先,我们创建一个io.mykit.annotation.jdk.db.provider Java包,在这个Java包创建一个@Table注解,@Table注解标注在Java类上...包下创建一个@Column注解,@Column注解标注在类中的字段上,表示当前类中的字段映射到数据表中的哪个字段上,如下所示。...没错,@Table注解和@Column注解,不管是在MyBatis框架还是Hibernate框架中,都会被使用到。这里,我们在收录极简版ORM框架时,也使用了这两个经典的注解。...包中创建一个AnnotationParser类,AnnotationParser 类是整个框架的核心,它负责解析标注在实体类上的注解,并且将对应的实体类及其字段信息映射到对应的数据表和字段上,如下所示。

    70220
    领券