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

CSharpEntityFramework与CodeFirst实践

无论怎样,我们作为开发都要与数据库进行打交道,来回切换关注的东西,还要注意数据库的表建立的对不对,数据类型对不对等等。好在c#中有了EF这样的强大的框架以及Code First的思想。...实践 基础配置 创建一个项目,并利用Nuget引入EntityFramework6 当我们引入EF时,我们发现项目下app.config其中的配置会发生更改,这个配置文件更改的内容就是EF为我们创建的...正如生成的DbContext所说:“为您要在模型中包含的每种实体类型都添加 DbSet。”...在这个类中,我们声明了一个DbSet属性books,这就对应了数据库中的book表。...实际数据库配置 完成EF的Mysql连接环境配置后,最基础的数据库还是需要建立的,所以去数据库创建一个名为bookdbdemo的数据库,按道理来说,我们只需要在这个地方触碰到数据库,况且这还是DBA的事情

28310

.NET 云原生架构师训练营(模块二 基础巩固 EF Core 更新和迁移)--学习笔记

Entity State Property State Entity State Added 添加 Unchanged 没有变化 Modified 已修改 Deleted 已删除 Detached 未跟踪...= "new-url"; db.SaveChanges(); } } catch(DataException) { } 并发 乐观处理:系统认为数据的更新在大多数情况下是不会产生冲突的...,只在数据库更新操作提交的时候才对数据作冲突检测(推荐) 悲观处理:根据命名即对数据库进行操作更新时,对操作持悲观保守的态度,认为产生数据冲突的可能性很大,需要先对请求的数据加锁再进行相关操作 在 Entity...,都会产生最新的版本号,如果更新的时候查询的版本号与之前的版本号不一致,就会报错 在 UpdateAsync 方法中的查询和更新中间如果数据库的行版本号发生了修改,就会报错 ProjectController...project.RowVersion; 2.4.7 EF Core -- 迁移 生成 SQL 脚本 从空白开始生成sql脚本 dotnet ef migrations script 生成指定版本到最新版本的

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

    .NET 云原生架构师训练营(模块二 基础巩固 EF Core 更新和迁移)--学习笔记

    Entity State Property State Entity State Added 添加 Unchanged 没有变化 Modified 已修改 Deleted 已删除 Detached 未跟踪...entity.Url = "new-url"; db.SaveChanges(); } } catch(DataException) { } 并发 乐观处理:系统认为数据的更新在大多数情况下是不会产生冲突的...,只在数据库更新操作提交的时候才对数据作冲突检测(推荐) 悲观处理:根据命名即对数据库进行操作更新时,对操作持悲观保守的态度,认为产生数据冲突的可能性很大,需要先对请求的数据加锁再进行相关操作 在 Entity...,都会产生最新的版本号,如果更新的时候查询的版本号与之前的版本号不一致,就会报错 在 UpdateAsync 方法中的查询和更新中间如果数据库的行版本号发生了修改,就会报错 ProjectController...project.RowVersion; 2.4.7 EF Core -- 迁移 生成 SQL 脚本 从空白开始生成sql脚本 dotnet ef migrations script 生成指定版本到最新版本的

    56611

    EntityFramework Core 学习扫盲

    在后文中,笔者会直接进入正题,所以这篇文章仍然还是需要一定的EF ORM基础。 对于纯新手用户,不妨先去看看文末链接中一些优秀博客,笔者当初也是从这些博客起家,也从中得到了巨大的帮助。...无论是使用DbSet的形式抑或是使用modelBuilder.Entity的形式都能将定义的实体映射到数据库中,下文也会继续做出说明。 3....包含和排除实体类型 将实体在Context中映射到数据库有多种方式: 使用DbSet定义属性。 在OnModelCreating方法中使用Fluent Api配置。...假如导航属性中存在对其他实体的引用,那么即便不把被引用实体配置为显式引用,被引用实体也可以隐式地映射到数据库中。 如以下代码所示。...列名称和类型映射 Property方法对应数据库中的Column。 默认情况下,我们不需要更改任何实体中包含的属性名,EF CORE会自动地根据属性名称映射到数据库中的列名。

    9.6K90

    Entity Framework CodeFirst尝试

    这样设计的好处在于我们可以针对概念模型进行所有数据操作而不必关系数据的存储关系,使我们可以更加自然的采用面向对象的方式进行面向数据的应用程序开发。...从某种角度来看,其实“Code First”和“Model First”区别并不是太明显,只是它不借助于实体数据模型设计器,而是直接通过编码(数据类)方式设计实体模型(这也是为什么最开始“Code First...Code First 简单使用演示 第一步:还是添加一个控制台应用程序,然后在此项目中添加两个简单的实体类 using System; using System.Collections.Generic;...因此接下来我们需要给这个应用安装EntityFramework包,因为到目前为止我们并没有引入EF框架相关的任何内容,我们需要引入EF相关程序集。但是我们有更好的选择那就是NuGet。...针对数据库上下文操作类的更改 public class OrderTestContext:DbContext { public OrderTestContext(string

    67430

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

    虽然 .NET 平台中 ORM 框架有很多,比如 Dapper、NHibernate、PetaPoco 等,并且 EF Core 的性能也不是最优的(这是由于 EF 的实体跟踪特性,将其禁用后可以大幅提升性能...使用 LINQ 不再需要编写复杂的数据库访问代码; EF Core 支持大部分流行的数据库,切换数据库时只需要更改数据库访问驱动,并不需要更改业务逻辑。...DbSet 是用于修改和查询实体的数据,对 DbSet 的 LINQ 查询会转换为对应数据库表的查询。... 属性并不是必须的,只是为了简化操作,在实例化数据库上下文后,仍然可以使用 Set() 方法获取实体类的 DbSet。...不使用 DbSet 属性查询 report_type 表的数据。

    2.5K10

    C# 数据操作系列 - 5. EF Core 入门

    0.前言 上一章简单介绍了一下ORM框架,并手写了一个类似ORM的工具类。这一章将介绍一个在C#世界里大名鼎鼎的ORM框架——Entity Framework的Core版。...EF可以在不使用任何配置的前提下,自动解析类与表之间的映射(具体的映射逻辑与我们手写的ORM工具类一致或相近)。 自动跟踪更改。...可以延迟加载需要的数据,外键引用属性、查询结果等 丰富的映射关系,支持一对一,一对多,多对多,甚至继承、单表多实例等 可以使用Linq 进行查询 非Core版的可以通过数据库表生成实体类,两种都可以通过实体类生成表...因为EF更多的是基于.NET Framework开发的,所以微软以EF为基础针对.net core做了一定的修改,然后EF Core诞生了。可以说EF Core是专门为.net core开发的。...使用工具连接到blogging.db数据库,可以看到 EF自动生成的两个实体类对应表的DDL: CREATE TABLE "ModelBs" ( "Id" INTEGER NOT NULL CONSTRAINT

    2.6K10

    EF 约定介绍

    ,该集合属性里面的元素是另一个实体时,则默认未一对多关系,即使没有显示的指定一对多的关系,EF会默认的设置主外键(主从)关系 (3)、一对一的实体关系,需要手动设置主从关系 (4)、多对多无载荷关系实体...就可以使用 context(数据库上下文),使用这些预先暴露的DbSet类型,具体的代码如下:   public class EFStudyDbContext:DbContext {...//暴露City的DbSet类型的属性 public DbSet Citys { get; set; } //暴露Town的DbSet类型的属性...) Convention EF中,两个实体间的关系是通过导航属性的方式来实现,每一个对象都能拥有一个它所参与的关系的导航属性,导航属性提供了一种方式在两端来操作这个关系来获取我们需要的数据,可以返回任何一方的引用对象...(对象间的关系是1:0或1:1),或者对象的集合(对象间的关系是1:*或*:*),Code First 能够根据导航属性定义的方式来推断实体间的关系.并映射到数据库表中.

    1.6K100

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

    文章目录 前言 一、使用控制台手搭webapi框架 1.配置文件 2.控制台配置 二、EFCore框架DBSet配置详解 1.实体统一配置 2.实体继承统一接口 3.获取程序集所有类 4.批量注入模型类到...LibraryDbContext和EFCoreEleganceUseEFCoreModule,下面着重详解 二、EFCore框架DBSet配置详解 1.实体统一配置 EF实体继承统一的接口,方便我们反射获取所有...EF实体,接口可以设置一个泛型,来泛化我们的主键类型,因为可能存在不同的表的主键类型也不一样。...DBContext中作为DBSets,再也不需要一个个写DBSet了,可以用过DbContext.Set()获取用户的DBSet。...三、EFCore框架表配置详解 1.配置基类, 创建一个配置基类,继承自IEntityTypeConfiguration,做一些通用的配置,比如设置主键,软删除等。

    1.5K10

    .NET Core MongoDB数据仓储和工作单元模式封装

    仓储模式(Repository )带来的好处是一套代码可以适用于多个类,把常用的CRUD通用方法抽象出来通过接口形式集中管理,从而解除业务逻辑层与数据访问层之间的耦合,使业务逻辑层在存储、访问数据库时无须关心数据的来源及存储方式...该类应负责建立与所需数据库的连接,在建立连接后,该类将在内存中或按请求持有数据库上下文(基于API管道中配置的生命周期管理。)...,可以归纳为介于实际业务层(领域层)和数据访问层之间的层,能让领域层能在感觉不到数据访问层的情况下,完成与数据库的交互和以往的DAO(数据访问)层相比,Repository层的设计理念更偏向于面向对象,...} public void Dispose() { _context.Dispose(); } } 注册数据库基础操作和工作单元...//注册数据库基础操作和工作单元 builder.Services.AddScoped(); builder.Services.AddScoped

    1.4K10

    .net 温故知新:【10】.NET ORM框架EFCore使用入门之CodeFirs、DBFirst

    前言:本系列是我自己学习.net相关知识,以便跟上.net跨平台的步伐,目前工作原因基本在.net Framework4.7以下,所以才有了这一系列的学习总结,但是并不是从基本的C#语法和基础知识开始的...目的在于通过要点的梳理最后串联起整个跨平台框架。之前的几篇算是把框架重要设计和框架重要知识点复习了,当然什么系统都可能使用到ORM框架。...编写SqliteContext类构成模型的上下文类,实体类:Student、Course。...该命令完成后会生成一个Migration文件夹包含两个类,一个数据库创建类InitialCreate是我们定义的,可以按需求更改名称。...生成的sqlite数据库如图,因为我们定义了Student、Course实体,所以会生成两个表以及表的字段,同时还会生成一个历史表,用于记录我们每次迁移的记录。

    2.9K30

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

    CodeFirst是EF提供的一种技术手段,使我们从以往的创建数据库后再创建模型变成了只需要关注代码方式进行创模,然后通过EF框架映射到数据库架构并生成。...其他环境进行迁移操作 如果需要再其他开发环境中搭建数据库的话,只需要获取最新的项目代码,使用Update-DataBase命令就可以了。...如果数据库复杂度不高的话,随便用哪个都可以,但一般我们的项目会越来越庞大,数据库的更改也会越来越频繁,这时候CodeFirst就会落后于Migrator.Net,CodeFirst会根据您控制台命令Add-Migration...生成从之前版本到现在的所有更改,而Migrator.Net则因为我们自己来编写的,会清晰明了,对迁移来说也会更好(个人想法,可能还未深入了解的关系吧)。...无耦合,迁移脚本自己编写,不需要了解我们的实体类 数据库特性支持 基本支持,遇到特别字段,可通过修改生成的迁移脚本进行修改 基本支持 创建新数据库 可自动创建 需手动创建 两个功能相似,但在使用上还是各有千秋

    97290

    ASP.NET Core 使用 SQLite 教程,EF SQLite教程

    笔者版本 ASP.NET Core 版本为 2.1 ,选择的 NuGet 包版本为 2.11。 如果你的 .Net Core 是最新的,那么 NuGet 也选最新的即可。...A、B都是模型类,因为可以被生成数据库表,所以A也可以叫实体类,B因为没有 DbSet ,所以B叫模型类,不叫实体类。 A类将会生成一个真实的数据库中的表,有对应关系,所以,他是“实体类”。...public DbSet Uaa { get; set; } //Dbset 映射成一个表 //Dbset 里面的Users即为使用的模型类 //Uaa Users...类在数据库生成的名称 注: 上面代码表示以模型类Users为基础,在数据库中生成 名为 Uaa 的 表。...Lambda 表达式属于C# 基础知识,不会的话,先记着,以后查找资料。

    4.7K50

    asp.net core之EfCore

    EF Core(Entity Framework Core)是一个轻量级、跨平台的对象关系映射(ORM)框架,用于在.NET应用程序中访问和操作数据库。... Products { get; set; } } } 我们通过定义DbSet属性来表示数据库中的"Products"表。...接下来,运行以下命令来应用迁移并创建数据库: dotnet ef database update 上述命令将应用迁移并创建数据库。如果数据库已经存在,它将更新数据库以反映最新的模型更改。...使用连接工具查看Sqllite中的表。 __EFMigrationsHistory中记录是我们执行数据库迁移的记录。 Products表结构也对应我们的实体类的属性。 5....查看数据库可以看到数据已经被删除。 总结 EF Core是一个功能强大且易于使用的ORM框架,它提供了一种简单的方式来进行数据库操作。

    98230

    【ASP.NET Core 基础知识】--数据库连接--数据迁移和代码优先开发

    一般用于如下情况: 系统升级: 当企业需要更新其IT基础设施,如数据库版本升级或操作系统更新时,数据迁移是必要的步骤,以确保数据在新系统中的可用性。...: 当您更改DbContext或实体类时,可以使用迁移来更新数据库结构。...以下是结合数据迁移和代码优先开发的步骤: 设计数据库模型: 在代码优先的方法中,首先设计实体类和数据库模型。 使用 C# 或 VB.NET 等编程语言定义实体类,并考虑实体之间的关系。...应用迁移: dotnet ef database update 这将应用所有未应用的迁移到数据库中。...dotnet ef migrations add AddCategoryToProducts 应用最新迁移: 将最新的迁移应用到数据库。

    23100

    C# 数据操作系列 - 8. EF Core的增删改查

    当然了,如果有小伙伴有更好的方法也可以分享出来呀。 1.2 配置文件的加载或者实体对象的托管 如果我们不使用配置文件的话,就必须在EF Core的上下文类里添加一个类型是DbSet的属性。... Singles { get; set; } public DbSet Targets { get; set; } } 以上也就是这一小节标题中的实体对象的托管...Restrict None None 而对于数据的修改,EF Core的做法是通过监控实体的ChangeTracker来实现对数据实体的状态更新。...不需要我们额外的调用修改方法(因为根本没有Update方法)。 EF Core在我们调用 SaveChanges 会把缓存的所有更改(增、删、改)都推送给数据库。...数据访问系列,EF Core 篇即将到一段落。待EF Core篇完成后,将带领一起去探索 Nhibernate和Dapper,SqlSugar这三个ORM框架。

    3.2K20
    领券