EntityFrameworkCore中的OnModelCreating】的更多相关文章

在我们使用EntityFrameworkCore作为数据库ORM框架的时候,不可避免的要重载DbContext中的一个虚方法OnModelCreating,那么这个方法到底是做什么的?到底有哪些作用呢?带着这些问题我们来看看在EntityFrameworkCore到底该如何使用OnModelCreating这个方法,首先我们来看看Microsoft.EntityFrameworkCore命名空间下面的DbContext中关于OnModelCreating的定义及注释. /// <summary>…
1.生成过滤的表达式目录树 protected virtual Expression<Func<TEntity, bool>> CreateFilterExpression<TEntity>() where TEntity : class { //构建的表达式目录树 TEntity就是满足条件的每个实体表 Expression<Func<TEntity, bool>> expression = null; //根据租户ID进行过滤数据 //exp…
Entry表示一个追踪,里面有state属性,是EntityState的枚举类型. 每一个实体都有一个相对应的Entry: var entry = dbContext.ChangeTracker.Entries<Student>().FirstOrDefault(entity => entity.Entity == studentTemp); 下面总结一下各个状态的说明: Added:实体还未插入到数据库当中,当调用SaveChanges后将修改其状态并将实体插入到数据库. 调用DbCo…
Attach 的坑 Model Filed Database Value Console Value User Phone +123000000000 +12333333333 User Email null eeeeeee User Id 1 1 dbcontext.Users.Add(new User() { UserName = "test1", CreatedAt = DateTime.Now Phone = "+1230000000" }); dbcont…
突发奇想,想把业务修改的所有字段原始值和修改后的值,做一个记录,然后发现使用EF可以非常简单的实现这个功能 覆盖父类中的 SaveShanges() 方法 public new int SaveChanges() { //是否记录EF变更日志 bool efLogFlag = true; if (efLogFlag) { WriteEFDataLog(); } return base.SaveChanges(); } 获取到EF 数据库上下文中所有的变更条目 因为是测试Demo所以之记录了 Up…
摘要:参考网址:https://docs.microsoft.com/zh-cn/ef/core/get-started/full-dotnet/new-db场景:使用ASP.NETEntityFrameworkCoreCODEFIRST创建多对多实体需求:CODEFIRST实现多对多的实体创建.细节:创建两个实体类,一个是AppUser,一个是AppRole,两个实体通过UserRole关联.即一个AppUser可能隶属于多个AppRole,一个AppRole可能关联了多个AppUser 标签…
配置步骤: 1.更改.Web项目的appsettings.json的数据库连接字符串.如:server=0.0.0.0;database=VincentAbpTest;uid=root;pwd=123456; 2.给.EntityFramworkCore项目添加Volo.Abp.EntityFrameworkCore.MySQL引用,并删除Volo.Abp.EntityFrameworkCore.SqlServer引用:修复在{项目名称}EntityFrameworkCoreModule.cs文…
.net core出来已经有很长一段时间了,而EentityFrameworkCore(后面简称EFCore)是.net framework的EntityFramework在.net core中的实现,至于EntityFramework是什么,这里就不介绍了. 本文主要介绍EFCore的CodeFirst方式下的数据迁移. 一.创建项目 首先创建项目结构如下: 说明: EFCoreDemo.EntityFrameworkCore:这个是一个标准类库,主要一些EFCore的一些ORM实体与配置.…
在Code First中使用Migrations对实体类和数据库做出变更,Mirgration包含一系列命令. 工具--库程序包管理器--程序包管理器控制台 运行命令:Enable-Migrations 启用Code first Migration 运行成功后会产生两个类:Configuration.cs  和<timestamp>_InitialCreate.cs,这是一个用时间戳作为前缀的类.如201212310201487_InitialCreate.cs   然后更改实体类Blog,增…
首先 在 EntityFrameworkCore中安装 Microsoft.Extensions.Logging.Console nuget install Microsoft.Extensions.Logging.Console按照官方文档 使用UseLoggerFactory 方法 (地址:https://docs.microsoft.com/zh-cn/ef/core/miscellaneous/logging) 安装相应的程序包之后, 该应用程序应创建 LoggerFactory 的单一…
原文链接:https://www.entityframeworktutorial.net/code-first/configure-one-to-many-relationship-in-code-first.aspx EF 6 Code-First系列文章目录: 1 翻译系列:什么是Code First(EF 6 Code First 系列) 2.翻译系列:为EF Code-First设置开发环境(EF 6 Code-First系列) 3.翻译系列:EF Code-First 示例(EF 6…
EF提供了三种方式来实现项目,分别是: (1)代码优先方法: (2)模型优先方法: (3)数据库优先方法: 本篇主要记录在Vs2010环境下使用代码优先的方式实现数据库和后端代码数据交互,语言为C#,数据库为sqlserver 2008. 1.在sqlserver中创建数据库 "StudentDB",注意只需要创建库名即可,不用建表: 2.打开VS2010,工具->连接到数据库,选择服务器名.验证方式等,获取连接字符串,注意连接字符串的name属性,需要在后边做对应.如下: 3.…
1. 简介 2. DbContext 生命周期和使用规范 2.1. 生命周期 2.2. 使用规范 2.3. 避免 DbContext 线程处理问题 3. 封装-工作单元 3.1. 分析 3.2. 设计 3.2.1. 类图 3.2.2. 时序图 3.2.3. 说明 3.3. 源代码 3.3.1. 工作单元 3.3.2. 单元测试 4. 封装-仓储 4.1. 分析 4.2. 设计 4.2.1. 类图 4.2.2. 时序图 4.2.3. 源码 5. 总结 1. 简介 工作单元:维护受事务影响的对象列表…
从C#9.0开始,我们有了一个有趣的语法糖:记录(record) 为什么提供记录? 开发过程中,我们往往会创建一些简单的实体,它们仅仅拥有一些简单的属性,可能还有几个简单的方法,比如DTO等等,但是这样的简单实体往往又很有用,我们可能会遇到一些情况: 比如想要克隆一个新的实体而不是简单的引用传递 比如想要简单的比较属性值是否都一致, 比如在输出,我们希望得到内部数据结构而不是简单的甩给我们一个类型名称 其实,这说的有些类似结构体的一些特性,那为什么不直接采用结构体来实现呢?这是因为解构体有它的一…
0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之权限管理系统(2) 功能及实体设计 3 Asp.Net Core 项目实战之权限管理系统(3) 通过EntityFramework Core使用PostgreSQL 4 Asp.Net Core 项目实战之权限管理系统(4) 依赖注入.仓储.服务的多项目分层实现 5 Asp.Net Core 项目实…
Creating a complex data model 创建复杂数据模型 8 of 9 people found this helpful The Contoso University sample web application demonstrates how to create ASP.NET Core 1.0 MVC web applications using Entity Framework Core 1.0 and Visual Studio 2015. For informa…
EntityFramework Core使用PostgreSQL 0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之权限管理系统(2) 功能及实体设计 3 Asp.Net Core 项目实战之权限管理系统(3) 通过EntityFramework Core使用PostgreSQL 4 Asp.Net Core 项目实战之权限管理系统(4) 用户登录…
使用ASP.NET Core MVC 和 Entity Framework Core 开发一个CRUD(增删改查)的应用程序 不定时更新翻译系列,此系列更新毫无时间规律,文笔菜翻译菜求各位看官老爷们轻喷,如觉得我翻译有问题请挪步原博客地址 本博文翻译自: http://l-knowtech.com/2017/08/28/first-crud-application-asp-net-core-mvc-using-entity-framework-core/ 本文打算使用ASP.NET Core M…
EntityFramework Core 学习系列(一)Creating Model Getting Started 使用Command Line 来添加 Package  dotnet add package Microsoft.EntityFrameworkCore.SqlServer 使用 -v 可以指定相应包的版本号. 使用dotnet ef 命令  需要在.csproj 文件中包含下面引用 <ItemGroup> <DotNetCliToolReference Include=…
A.net core 2.0新特性支持通过IEntityTypeConfiguration<>添加Code First配置到一个封装类. 新建目标框架为.NET Core类库 新建完了以后右键点击程序集,选择属性,选择目标框架为.NET Core 2.0 在EntityFrameworkCore程序集中添加类User(用户).Address(用户住址).Book(书).Author(作者).这里不讨论各个类设计的合理性和程序架构,主要目的是为了演示各个类之间的关系配置. User和Addres…
通过新建一个类来实现  IEntityTypeConfiguration 这个接口,将EFCore中的实体配置写在单独的配置类中,便于修改和维护. OnModelCreating代码: protected override void OnModelCreating(ModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); modelBuilder.Entity<Class>().ToTable("T_Classs…
前言 在上一篇文章中,我们介绍了如何根据不同的租户进行数据分离,分离的办法是一个租户一个数据库. 也提到了这种模式还是相对比较重,所以本文会介绍一种更加普遍使用的办法: 按表分离租户. 这样做的好处是什么: 在目前的to B的系统中,其实往往会有一个Master数据库,里面使用的是系统中主要的数据,各个租户的数据,往往只是对应的订单.配置.客户信息. 这就造成了,租户的数据不会有很多的种类,他的数据表的数量相对Master来说还是比较少的. 所以在单一租户数据量没有十分庞大的时候,就没有必要对单…
前言 本文是多租户系列文章的附加操作文章,如果想查看系列中的其他文章请查看下列文章 主线文章 Asp.net core下利用EF core实现从数据实现多租户(1) Asp.net core下利用EF core实现从数据实现多租户(2) : 按表分离 Asp.net core下利用EF core实现从数据实现多租户(3): 按Schema分离 附加:EF Migration 操作   (强关联文章,建议先阅读) 附加文章 EF core (code first) 通过自定义 Migration…
在上一节五分钟完成 ABP vNext 通讯录 App 开发 中,我们用完成了通讯录 App 的基础开发. 这本章节,我们会给通讯录 App 安装私信模块,使不同用户能够通过相互发送消息,并接收新私信的通知.在章节的最后,笔者将演示模块的"改装",实现禁止用户发私信给自己的定制化需求. 什么是"模块"? 使用 Abp 框架,你可以提前制作一些功能模块,例如微信登录.私信.博客.论坛等模块,将它们打包备用.在开发具体的 App 应用时,你可以轻松将模块安装到你的工程中…
前言 GitHub地址 https://github.com/yingpanwang/MyShop/tree/dev_jwt 此文对应分支 dev_jwt 此文目的 上一篇文章中,我们使用Abp vNext构建了一个可以运行的简单的API,但是整个站点没有一个途径去对我们的API访问有限制,导致API完全是裸露在外的,如果要运行正常的商业API是完全不可行的,所以接下来我们会通过使用JWT(Json Web Toekn)的方式实现对API的访问数据限制. JWT简介 什么是JWT 现在API一般…
前言 还记得当初学习数据库操作时,用ADO.NET一步一步地进行数据操作及查询,对于查询到的数据还得对其进行解析,然后封装返回给应用层:遇到这种重复而繁琐的工作,总有一些大神或团队对其进行封装,从而出现了很多ORM框架,让小伙伴把更多精力放在业务处理上,同时更多的面向程序对象开发,对工作效率的提升有很大的帮助. 目前关于C#出现了很多ORM框架,比较流行的大概有FreeSql (国内).SqlSugar (国内).Dapper (国外).EF/EF Core (国外).linq2db (国外)等…
背景 在使用ABP vNext过程中,因为我们的用户体系庞大,所以一直与其他业务同时开发,在开发其他业务模块时,我们一直存在着误区:认为ABP vNext 自动处理了数据新增时的租户Id(TenantId)的自动赋值插入.直到我们开始接入用户权限模块后,发现并不如此. 思路 为了实现字段的自动赋值,且无感知的,我们的思路是做类似拦截器,在上层应用新增数据相关代码流程进入DbContext的时候,在DbContext中进行处理. 其他 问题 为了实现上层业务开发人员的[无感知],哪怕在代码编写过程…
0 前言 本文正文第一节,会对 Code First 进行基本的介绍,以及对相关名词进行说明,读者一开始可以不用在这里消耗过多时间,可以先操作一遍例子,再回过头理解. 第二节,以一个简单的例子,展示 EF Core 的 Code First 模式的操作流程. 第三节,将 Code First 的其他指令例举出来,以便于日后翻查. 第四节(未完成),将 Code First 其他一些操作,如:在迁移代码中添加 SQL 语句等. 第五节,将 Code First 模式常见的问题列举出来,防止踩坑.…
大家好,我是张飞洪,感谢您的阅读,我会不定期和你分享学习心得,希望我的文章能成为你成长路上的一块垫脚石,我们一起精进. EF Core集成 EF Core是微软的ORM,可以使用它与主流的数据库提供商合作,如SQL Server.Oracle.MySQL.PostgreSQL和Cosmos DB.当您使用ABP命令行界面(CLI)创建新的ABP解决方案时,它是默认的数据库提供程序. 默认情况下,启动模板使用SQL Server.如果您更喜欢其他的数据库管理系统(DBMS),可以在创建新解决方案时…
前言 上一篇我们简单讲述了在EF Core1.1中如何进行迁移,本文我们来讲讲EF Core1.1中那些不为人知的事,细抠细节,从我做起. 显式创建DbContext实例 通过带OnConfiguring的构造函数 这个想必是我们最简单的方式了吧,通过调用继承自DbContext的类并且调用它的无参构造函数,同时我们需要谨记的时每当实例化时我们都需要将其释放也就是将其实例包裹在Using中.如下: using (var context = new EFCoreContext()) { } 接着通…