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

EntityFramework Core 学习扫盲

Data Annotations 在自定义的MyContext中添加以下属性信息,并在每个自定义的实体名称上部增加[Table("XXX")],其中XXX为开发者指定的名称。...列名称和类型映射 Property方法对应数据库中的Column。 默认情况下,我们不需要更改任何实体中包含的属性EF CORE会自动地根据属性名称射到数据库中的列名。...在EF CORE中,主体(Principal Entity)指的是包含主键/备用键的实体。所以在一般情况下,所有的实体都是主体。主体键(Principal Key)指的是主体中的主键/备用键。...继承 继承通常被用来控制实体类接口如何映射到数据库结构中。在EF CORE 当前版本中,TPC和TPT暂不被支持,TPH是默认且唯一的继承方式。...顾名思义,一种继承结构全部映射到一张中,比如Person父类,Student子类和Teacher子类,由EF CORE映射到数据库中时,将会只存在Person类,Student和Teacher将以列标识的形式出现

9.5K90

Entity Framework 约定

我们定义完模型,还需要让EF上下文你知道应该映射那些模型,此时我们需要通过 DbSet 属性来暴露模型的。...如果一个类中既没有id属性,也没有类+id的属性,那么代码在运行时将会报错,因为EF没有找到符合要求的字段创建主键。...导航属性的命名规则如下:导航属性名称+主体主键名称 或者 主体类+主键属性名称 或者 主体主键属性。...简单的说就是:一个复杂类型作为已存在对象的属性,EF会将复杂类型的类映射到已存在的中,已存在的包将包含这些列,不是将复杂类型映射成另外单独的一张。...OfType().Any()) .Configure(c => c.IsUnicode(false)); } 添加该特性后,映射在数据库中的列将是 varchar 类型,不是

1.3K10
您找到你想要的搜索结果了吗?
是的
没有找到

EF 约定介绍

,EF自动生成中间,不需要新增实体来表示. (5)、默认复数化 2、类型发现约定(Type Discovery) 使用EF开发,往往是以定义一些模型类开始,定义完这些模型类之后,需要让DbContext...,EF会默认将长得最像Id的属性(且类型为GUID)设为主键,如果类中的属性(Property)名称为 ID (不区分大小写)或 ClassNameID(类 + ID),Code First 则推断这个属性为主键...1:0或1:1),或者对象的集合(对象间的关系是1:*或*:*),Code First 能够根据导航属性定义的方式来推断实体间的关系.并映射到数据库中....除了导航属性规定实体间的关系外,外键属性来式规定实体间方式的一种手段.Code First能够推断以下的命名属性为外键(优先级从上到下): (1)、导航属性+关联实体的主键名 (2)、关联实体实体+...namespace下的约定,例如,移出复数约定,代码如下: public class SchoolEntities : DbContext { . . .

1.6K100

Entity Framework 4.1 Code-First 学习笔记

这是EF的默认约定,如果要修改关系名称,并修改对应的字段的名称,我们可以使用下面的代码来完成: modelBuilder.Entity() .HasMany(e => e.Orders...每种实现类型一张 TPC: 有点像其他两个的混合,对于每种实现类型映射到一张,抽象类型像 TPH 一样展开到中。 这里我将讨论 TPT 和 TPH,EF 的好处是可以混合使用这些方式。...还有一个额外的区分列,用来保存数据是属于哪一个类,当 EF 读取一行的时候,区分列被 EF 用来知道应该创建实例的类型,因为现在所有的类都被映射到了一张中。...DbContext.Database.SqlQuery:这个方法将返回的数据集映射到相应的对象,不去管这个对象是不是实体。重要的是 EF 不会跟踪返回的对象,即使他们是真正的实体对象。   ...DbSet.SqlQuery:这个方法返回的实体将会被 EF 跟踪修改,所以,如果你在这些返回的实体上做了修改,当 DbContext.SaveChanges 被调用的时候,将会被处理。

1.6K10

Entity Framework Core 2.0 新特性

六.拆分(Table splitting)   现在可以将两个或多个实体类型映射到同一,其中主键列将被共享,每一行对应两个或多个实体。   ...要使用拆分,必须在共享的所有实体类型之间配置标识关系(外键属性构成主键) 示例代码: 1 modelBuilder.Entity() 2 .HasOne(e => e.Details...按照惯例,将为所属类型创建一个影子主键,它将通过使用拆分映射到与所有者相同的。...要注意的几件事: 按照惯例,在生成SQL时,该方法的名称用作函数的名称(在本例中是用户定义的函数),但可以在方法注册期间重写名称和schema。...目前只支持标量函数 EF Core迁移将不负责创建它,您必须在数据库中创建映射函数 九.code first 实体配置   在EF6可以通过 EntityTypeConfiguraiton 封装特定实体类型的配置代码

1.9K50

分享 | C#编写的电影售票系统(附源码+数据库)

嗯……为什么界面这么少女心呢,并不是小编有一颗少女心,而是因为UI部分是同组的女生负责设计的。 ? 我们做的是一个有会员制的电影院购票系统。...通过Detail栏展示用户信息与折扣,通过Hot Movie栏在最吸引眼球展示热电影的海报,提高用户的购买欲望。 最后,作为主要部分的座位选择栏简介明了,座位之间间隔明显,有效的防止用户错误操作。...//Code first会在第一次ef查询的时候会对__MigrationHistory访问,是为了检查数据库和model是否匹配,以保证ef能正常运行 Database.SetInitializer...;Initial Catalog=Students;Integrated Security=SSPI;") { } //DbSet是一个模版类,中代表的是模版类中的实体类...Hall:保存每个影厅的信息,包括一行的座位数和一列的座位数。 ? Movie:保存电影的信息,电影,类型,演员等。 ? Schedule:保存电影院的排片信息,包括价格,放映时间等。 ?

4.6K82

Entity Framework Core 2.0 新特性

(本文的英文原文地址:这里) 1.实体方面的新内容     1.1拆分      现在可以将多个实体类型映射到将要共享主键列的同一个,并且每一行将对应于两个或多个实体。    ...包含定义导航的实体是所有者。当查询所有者时,默认情况下将包含所有类型。 按照惯例,将为所属类型创建一个影子主键,并通过使用分割将其映射到与所有者相同的。...使用所属类型与EF6中使用复杂类型类似,(PS:这里解释一下EF6中的复杂类型,复杂类型是允许在实体中组织标量属性的实体类型的非标量属性。像实体一样,复杂类型由标量属性或其他复杂类型属性组成。)...) { var customer = _customerById(db, 147); } 3.查询方面 3.1改进LINQ翻译 使更多的查询成功执行,并将更多的逻辑生成SQL让它在数据库中执行(不是内存中...() 添加了EF.Functions属性(注意,这里应该是可以扩展的,添加更多的数据库方法),EF Core可以使用它们来定义映射到数据库函数或操作符的方法,以便可以在LINQ查询中调用它们。

3.8K90

【ASP.NET Core 基础知识】--数据库连接--使用Entity Framework Core进行数据库访问

ORM 映射器(Mapper): 负责将对象映射到数据库中的,以及将对象的属性映射到的列。 ORM 框架的主要优点包括: 提高了开发效率,因为开发者可以用熟悉的面向对象的方式来操作数据库。...2.3 Code First Code First 是 Entity Framework(EF)的一个开发范式,它侧重于通过编写代码来定义模型(Model)和数据库架构,不是依赖于图形界面或者配置文件来创建数据库实体...DbSetDbSet 是 DbContext 中表示数据库的属性。每个 DbSet 表示一个,并且可以用于查询和修改中的数据。...如果操作失败,你可以回滚到最近创建的保存点,不是回滚整个事务。...使用Find方法:当需要获取一个已知主键的实体时,使用Find方法不是FirstOrDefault或SingleOrDefault。

17000

了解EF CodeFirst的Migrator功能与Migrator.Net对比

CodeFirst是EF提供的一种技术手段,使我们从以往的创建数据库后再创建模型变成了只需要关注代码方式进行创模,然后通过EF框架映射到数据库架构并生成。...使用VS2012的数据连接,我们能看到我们的数据库已经创建,数据库名为命名空间.Context,这里是CodeFirstMigrator.BlogContext 看下数据库中有哪些东西: ?...Blogs和Posts就是EF为我们创建的2个模型,_MigrationHistory就是版本的信息 ?...Migrator.Net一般会新建一个类库,专门作为迁移用,但因为迁移代码都是我们自己完成,所以对码农来说会更新明了。...,做为一个架构师来说,我更偏向于使用Migrator.Net,因为CodeFirst是EF的一种功能,我们的项目有时候不是必须使用EF的。

88590

ASP.NET Core MVC+Layui使用EF Core连接MySQL执行简单的CRUD操作

三、创建对应数据库实体模型:   注意该篇博客使用的是手动模型优先的方式进行数据库表字段与模型属性映射,当然如果大家觉得这样子比较麻烦的话可以真正意义上的模型优先,直接创建模型在program.cs...实体集属性对应数据库中的(注意实体必须与表明一致) /// public DbSet UserInfos { get; set...; } /// /// TODO:当数据库创建完成后, EF 创建一系列数据默认和 DbSet 属性名相同。...集合属性的名称一般使用复数形式,但不同的开发人员的命名习惯可能不一样, /// 开发人员根据自己的情况确定是否使用复数形式。...在定义 DbSet 属性的代码之后,添加下面代码,对DbContext指定单数的来覆盖默认的

2.7K10

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

虽然 .NET 平台中 ORM 框架有很多,比如 Dapper、NHibernate、PetaPoco 等,并且 EF Core 的性能也不是最优的(这是由于 EF实体跟踪特性,将其禁用后可以大幅提升性能...手动创建实体类 下面将手动编写两个实体类 Hospital.cs 和 Doctor.cs,以熟悉 EF Core Attribute 是如何将数据库实体类之间建立联系的。...实体属性 每一个实体类都有一组属性,EF Core 会将实体属性映射到数据库中的列。 的映射 对数据库进行映射,使用 Table() Attribute。...DbSet 是用于修改和查询实体的数据,对 DbSet 的 LINQ 查询会转换为对应数据库的查询。... 属性并不是必须的,只是为了简化操作,在实例化数据库上下文后,仍然可以使用 Set() 方法获取实体类的 DbSet

2.4K10

CSharpEntityFramework与CodeFirst实践

这种开发模式适合于全新的项目,它使得我们可以以代码为核心进行设计不是先构造数据库。这样一来,使得我们更加关注代码的开发。...回到项目中,接下来我们创建Book实体类,为其添加Id、Title以及Price属性,同时使用特性在属性以及类上标注该实体类在数据库中的体现方式: namespace CodeFirstDemo {...Title { get; set; } [Required] public double Price { get; set; } } } 使用Table特性来实体类...(dbo是EF的一些配置语法),设置表字段以及设置主键;Down方法就是回滚操作,将Book删除。...删除 为了证明EF再删除的时候,并不会影响其他的,我再次利用创建了一个新的实体类EBook并更新DbContext以及进行EF迁移功能: namespace CodeFirstDemo {

23210

.NET EF Core(Entity Framework Core)

“程序包管理器控制台”中执行Update-database 4、查看一下数据库,建好了 反向工程 1、根据数据库来反向生成实体类 2、Scaffold-DbContext 'Server=....AddAuthorName_ModifyTitle为本次迁移操作的名称 4、执行:Update-Database EF Core操作数据库 插入数据 只要操作Books属性,就可以向数据库中增加数据,...EF Core会把Linq操作转换为SQL语句。面向对象,不是面向数据库(SQL)。...;Username=postgres;Password=123456"); EF Core实体的配置 主要规则: 1:采用DbContext中的对应的DbSet的 属性。...set; } } builder.Property(h => h.RowVer).IsRowVersion(); Tips:乐观并发控制能够避免悲观锁带来的性能、死锁等问题,因此推荐使用乐观并发控制不是悲观锁

11211

MVC3教程之实体模型和EF CodeFirst

EF支持一个被称之为“code-first”的开发范例。Code-first允许你通过书写一些简单的类来创建模型对象,不用关心这些类的持久化。... Books { get; set; } } }   BookDbContext代表EF中Book在数据库中的上下文对象,通过DbSet使实体类与数据库关联起来。...会检查当前的数据连接指定的数据库是否被创建,如果没有则有EF负责根据实体模型类创建数据库、数据;如果存在,EF会将查询条件添加到Sql查询语句,再将Sql语句发送到数据库进行数据读取。...在完成数据读取后,将数据转换为实体对象集合。EF对数据库的操作大致如此。   ...7.设置实体模型的数据验证   在ASP.NET MVC中,有一条作为核心的原则,就是DRY(“Don’t Repeat Yourself,中文意思为:不要让开发者重复做同样的事情,即“一处定义、处处可用

1.3K20

asp.net core之EfCore

EF Core提供了一种简单、灵活和高效的方式来与各种数据库进行交互,它通过将数据库映射为.NET对象,并提供了一组强大的查询语言和操作API,使开发人员能够以面向对象的方式进行数据库操作。...定义模型类 在使用EF Core之前,我们需要定义一个或多个模型类,这些类将映射到数据库。... Products { get; set; } } } 我们通过定义DbSet属性来表示数据库中的"Products"。...进行数据库迁移 在使用EF Core之前,我们需要进行数据库迁移。迁移是将模型类映射到数据库的过程。...使用连接工具查看Sqllite中的。 __EFMigrationsHistory中记录是我们执行数据库迁移的记录。 Products结构也对应我们的实体类的属性。 5.

40630

在.NET Core类库中使用EF Core迁移数据库到SQL Server

起初我是在ASP.NET Core的Web项目中进行的,但后来发现放在此处并不是很合理,一些关于数据库的迁移,比如新增,字段,修改字段类型等等,不应该和最上层的Web项目所关联,数据的迁移文件放到这里也感觉有点多余...注意目标框架选择的是.NET Core 2.0不是.NET Standard 2.0。 0、前期准备 a)、实体定义,这个是在.NET Standard 2.0的类库中存放的。...ApplicationUser { get; set; } /// /// 角色 /// public DbSet Role { get; set; } } 1、问题汇总 首先要确保仓储类库中已经引入以下两个...的迁移单独维护一个多余的数据库连接配置。...下面是我调整之后重新生成的,是不是看出来和上面的有什么不同,一图胜万语: c)、最后一步,自己动手试试看:创建一个SeedData迁移文件来添加数据库的初始数据。

1.7K60

ASP.NET MVC5高级编程——(3)MVC模式的模型

称ArtistID属性为外键属性(foreign key),因为与模型对应的数据库中,专辑(Album)和艺术家(Artist)存在对应的外键关系,即ArtistID是Album的外键!...5 什么是实体框架,什么是代码优先和数据上下文? 新建的ASP.NET MVC5项目会自动包含对实体框架(EF)的引用。...EF实体框架会使用数据迁移来帮我们完成。 基架创建完成后,目录会发生变化,自动创建对应的view,如下: ?...EF框架的另一种也是默认的策略是延迟加载策略,即只加载主要对象(专辑)的数据,不填充Artist和Genre。...注意这里除了三个model类对应的,还有个__MigrationHistoryEF框架使用这个来维护代码优先模型和数据库模式一致!如果删除了这个,就需要我们自己来维护数据库模式的修改。

4.7K40

EntityFramework Core 自动绑定模型映射

笔者最近在和同事共同开发项目时,需要从他们提供的包含数据库实体类型的类库中读取实体信息绑定到自己的项目中(但是都在同一个解决方案里),所以很直接的一种方式就是把项目中所有的实体都以 public DbSet...代码如下: var entityTypes = Assembly.Load(new AssemblyName("存放实体类型的程序集名称")).GetTypes() .Where(type =>...假如目标数据库是类似于 PostgreSql 这种,数据库的和列名都得定义成小写字母,否则在 sql 时将不得不使用双引定义,十分的麻烦。...的迁移保留下来,在 EF Core 中,我们已经看不到它的身影了,残念ですね。...不过这也不是多难解决的事情,Github上已经有人给出了相关的解决方案。

1K60

Entity Framework应用:使用Code First模式管理数据库创建和填充种子数据

一、管理数据库连接 1、使用配置文件管理连接之约定 在数据库上下文类中,如果我们只继承了无参数的DbContext,并且在配置文件中创建了和数据库上下文类同名的连接字符串,那么EF会使用该连接字符串自动计算出数据库的位置和数据库...查看创建后的数据库,会发现只有一张迁移记录。...Student,使用已经存在的ConnectionString查询数据库的Student,Student实体类定义如下: 1 using System; 2 using System.Collections.Generic...无论我们对传入的连接字符串名称如何改变,都是无济于事的,也就是说和数据库上下文类同名的连接字符串优先权更大。...MigrateDatabaseToLatestVersion:如果使用了该初始化器,那么无论什么时候更新实体模型,EF都会自动地更新数据库模式。

1.2K20
领券