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

Entity Framework Core 2.0 新特性

包含定义导航实体是所有者。查询所有者,默认情况下将包含所有类型。 按照惯例,将为所属类型创建一个影子主键,并通过使用表分割将其映射到与所有者相同表。...: 在生成SQL,该方法名称将用作函数名称(在本例中为用户定义函数),但在方法注册期间可以覆盖名称和模式 目前只支持标量功能 必须自行在数据库中创建映射函数,EF Core迁移不会对其进行创建...3.3FromSql和ExecuteSqlCommand中字符串插值 C#6(C#6.0特性请移步:这里)中引入了字符串插值,这是一个允许C#表达式直接嵌入到字符串文字中功能,提供了一种在运行时构建字符串方法...这种新支持允许以“安全”方式使用C#字符串插值。这样就可以防止在运行时动态构建SQL发生常见SQL注入攻击...., "a%"); select c; 值得注意是,Like方法带有内存中实现,对内存中数据进行查询,或者在客户端需要发生相关内存查询,可以方便很多.

3.8K90

迁移 appseting.json 创建自定义配置中心

数据库切换 想要解决数据库切换问题,首先就是把配置构建从Program类中抽离出来,重新构建一个类去创建配置所用到IConfiguration,故我将配置初始写在静态方法中,通过传递连接字符串以及数据库类型方式去构建不同上下文...数据库切换其实也给了我们热重载解决方案,可以将构建方法暴露出来,动态去刷新构造类IConfiguration,如果是在控制台应用程序或者其他非Web项目中,可能没有appseting.json文件,...如果它不存在,则创建数据库及其所有模式,并确保它与此上下文模型兼容 dbContext.Database.EnsureCreated(); var keyValueData...使用自定义连接字符串,选择对应数据库枚举。...通过调试查看数据 配置中心热重载以及切换数据库实现 可以看到我们首先通过传递连接字符串以及数据库类型初始化生成了IConfiguration,使用是mysql数据库,切换数据库则只需要更换连接字符串和枚举即可

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

ASP.NET MVC学习笔记05模型与访问数据模型

Entity Framework(简称为EF)是支持代码优先(Code First)开发模式。代码优先允许通过编写简单类来创建对象模型,然后从类创建数据库。...创建使用数据创建连接字符串(Connection String)并使用SQL Server LocalDB 前面创建MovieDBContext类负责处理链接到数据库,并将Movie对象映射到数据库记录任务...如果没有指定一个连接字符串, Entity Framework将会在用户目录中创建一个LocalDB数据DbContext (如,本例中 MvcMovie.Models.MovieDBContext...创建操作方法和视图, Visual Studio 中 scaffolding机制 (也就是通过一个强类型模型)使用了 MoviesController类和视图模板。...创建MoviesController,Visual Studio 会将@model声明自动包含到 Details.cshtml文件顶 部。

2.4K40

【初学者指南】在ASP.NET MVC 5中创建GridView

例如,一种情景是:因为数据库中有太多数据,所以在客户端进行分页并不是一个选择。表格中有百万行数据,如果用客户端分页功能来绑定,页面就会由于大量数据行处理和HTML渲染而反应很迟钝。...从对话框中跳转到 Web,选择 ASP.NET Web 应用程序项目,然后单击确定。 ? 在模板中选择 MVC,如果编写了应用单元测试,请先做检查,并点击 OK。 我们工程都是用基本功能创建。...在写控制器代码之前,我们需要为实体框架配置连接字符串,以便在操作数据连接数据库。因此,我们连接字符串应该被指定给一个有效数据源,以便我们在运行时应用不会被打断。...为了做到这一点,请打开 web.config 并为数据库提供连接字符串。在配置文件中,你会发现下面配置节点中连接字符串,你需要在节点中根据你系统来修改连接字符串。...但是现在还有一个问题,那就是这是在客户端处理行为被调用时,所有数据会被视图渲染,这样就会造成大量数据出现时,页面性能变慢或者页面载入时间增加。

6.1K90

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

一、管理数据连接 1、使用配置文件管理连接之约定 在数据库上下文类中,如果我们只继承了无参数DbContext,并且在配置文件中创建了和数据库上下文类同名连接字符串,那么EF会使用该连接字符串自动计算出数据位置和数据库名...namevalue值和创建数据库上下文类类名相同,这样EF会使用该连接字符串执行数据库操作,究竟会发生什么呢?...”,并在配置文件中寻找和它同名连接字符串,然后它会使用该连接字符串计算出应该使用哪个数据库provider,之后检查数据库位置,之后会在指定位置创建一个名为TestDb.mdf数据库文件,同时根据连接字符串...DropCreateDatabaseIfModelChanges:这个策略意思就是说,如果领域模型发生了变化(具体而言,从领域实体提取出来模式信息和实际数据模式信息失配),就会销毁以前数据库...接下来我们看一下数据创建之后如何使用EF来插入种子数据。 为了向数据库插入一些初始化数据,我们需要创建满足下列条件数据库初始化器类: 1、从已存在数据库初始化器类中派生数据

1.2K20

在ASP.NET MVC5中实现具有服务器端过滤、排序和分页GridView

如果数据表不是特别大,这么做是可以;但是,如果数据表很大或者数据会随着应用使用而不断增加,就会引起问题。如果这样问题确实发生了,从长远来讲,这种创建表格方式将不是一个选择。...SQL 脚本文件,可以用它使用简单数据创建数据库和表。...配置数据连接字符串 在写控制器代码之前,我们需要为实体框架配置连接字符串,以便在操作数据连接数据库。因此,我们连接字符串应该被指定给一个有效数据源,以便我们在运行时应用不会被打断。...为了做到这一点,请打开 web.config 并为数据库提供连接字符串。在配置文件中,你会发现下面配置节点中连接字符串,你需要在节点中根据你系统来修改连接字符串。...写入 document.ready 文件,assetListVM.init( ) 函数将会被调用。

5.4K80

EF 数据连接约定(Connection String Conventions in Code First)

(命名空间+上下文类)作为数据库名,创建一个连接字符串,该连接字符串连接本地SQL Express或者LocalDb,并在SQL Express或者LocalD创建对应数据库,如果两者都安装了,则会选择连接...注:VS2010默认安装SQL Express,VS2012默认安装LocalDb,在安装过程中,EF NuGet包会检查哪个数据库服务(前面介绍)可用,EF创建默认连接时候,EF创建默认链接时候...,NuGet包将通过设置默认Code First数据库服务器来更新配置文件,该数据库服务器在通过约定创建连接首先使用该服务器。....二、DbContext带string参数构造函数 1、如果没有在数据库上下文进行其他额外配置,然后调用DbContext带参构造函数,传入你想要使用数据连接字符串,然后Code First...(2)、如果连接字符串name属性值和上下文类名不一样,但是还是希望上下文使用配置文件数据连接进行数据连接,这时就需要在上下文构造函数中调用DbContext带string参数构造函数,并传入连接字符串

1.4K90

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

数据库提供程序负责以下任务: 数据连接: 提供程序必须提供连接数据方法,并处理连接字符串数据操作: 提供程序需要实现与数据库进行交互必要命令,包括查询、插入、更新和删除操作。...创建DbContext类。 配置实体模型。 打开数据连接。 以下是一个简单示例,演示了如何使用EF Core连接数据库: 首先,确保已经安装了适当数据库提供程序包。...为了实现跨数据库操作,你必须在 DbContext 中指定对应数据库提供程序,并在 DbContext 构造函数中提供数据连接字符串。...你需要替换连接字符串服务器地址、数据库名称、用户名和密码。 3. 接下来,你可以使用 DbContext 实例执行数据库操作。...确保在使用不同数据情况下,为每个 DbContext 配置正确连接字符串。此外,不同数据库可能需要不同迁移和配置设置。在执行迁移时,你需要针对每个数据库单独运行迁移命令。

19800

非典那年记忆

课程内容主要步骤记录:  【】所包含是对应项目名 1、生成项目 abp new   ,并编译全部 2、修改连接字符串: 【DbMigrator】修改连接字符串,并执行这个项目,就实现数据创建和写入种子数据...它是整个解决方案共用类型 5、在DBContext中注册实体类 【EFCore】中,DbContext中添加DbSet  books;                             ...,  借助它们来添加种子数据——三本书信息Book 8、执行【DbMigrator】,更新数据库 不明白为什么第7步中添加类会自动被识别,ABP应该有什么自动发现机理。...类不继承其它任何类,  成员变量上添加 DataAnnotation ,数据注解! 这个DTO类竟然没有ID这个字段,更新到底会是什么个机制呢???...第三方表格插件已经内置,且abp写了许多辅助东西来适配第三方插件 abp.libs.datatables.createAjax是帮助ABP动态JavaScript API代理跟Datatable

94920

《Build the BookStore Application using the ABP vNext web application framework》笔记

课程内容主要步骤记录:  【】所包含是对应项目名 1、生成项目 abp new   ,并编译全部 2、修改连接字符串: 【DbMigrator】修改连接字符串,并执行这个项目,就实现数据创建和写入种子数据...它是整个解决方案共用类型 5、在DBContext中注册实体类 【EFCore】中,DbContext中添加DbSet  books;                             ...,  借助它们来添加种子数据——三本书信息Book 8、执行【DbMigrator】,更新数据库 不明白为什么第7步中添加类会自动被识别,ABP应该有什么自动发现机理。...类不继承其它任何类,  成员变量上添加 DataAnnotation ,数据注解! 这个DTO类竟然没有ID这个字段,更新到底会是什么个机制呢???...第三方表格插件已经内置,且abp写了许多辅助东西来适配第三方插件 abp.libs.datatables.createAjax是帮助ABP动态JavaScript API代理跟Datatable

2K30

Asp.Net Core 轻松学-经常使用异步你,可能需要看看这个文章

前言 事情起因是由于一段简单数据连接代码引起,这段代码从语法上看,是没有任何问题;但是就是莫名其妙报错了,这段代码极其简单,就是打开数据连接,读取一条记录,然后立即更新到数据库中。...问题所在 那到底是什么问题引起了程序执行确定性呢,答案就是 async/await,我们先来尝试改进一下最初代码 2.1 改进后代码 [HttpPut] public async...问题解决方案 3.1 问题分析 为什么会发生这种问题呢,原因就是因为使用了异步方法 async/await 没有值需要返回,使用了 void 造成,正确做法是如果没有返回值,则返回 Task...,如果有返回值,则使用 Task;一个异步方法内部没有返回 Task 时候,基于任务异步模式(TAP)并不知道异步任务状态, this.context.Update 执行完成后,发现挂载在内存中连接已经没有使用...,以确保 TAP 能够将上下文进行正确挂载,否则,异常发生,TAP 无非将异常信息挂载到相应 Task 上,亦无法跟踪其执行状态等信息 3.2 解决方案 请牢记下面的铁律 3.2.1 在 EFCore

69230

EF Core 实现读写分离最佳方案

前言 公司之前使用Ado.net和Dapper进行数据访问层操作, 进行读写分离也比较简单, 只要使用对应数据连接字符串即可....上面的两种方式都是从切换数据连接入手,但是频繁切换数据连接势必会对性能造成影响....我认为最理想方式是要避免数据连接切换, 且能够适应多DbContext情况, 在创建上下文实例,就指定好是访问主库还是从库, 而不是在后期再进行数据库切换....因此, 在上下文实例化时,就传入相应数据连接字符串, 这样一来DbContext创建就需要交由我们自己来进行, 就不是由DI容器进行创建了...., string dbName = null); } IDbProvider 接口, 根据上下文类型和配置文件中数据连接字符串名称创建IUnitOfWork, 在DI中生命周期是Scoped

2.2K00

.NET Core采用全新配置系统: 将配置保存在数据库中

就配置数据持久化方式来说,将培植存储在数据库中应该是一种非常常见方式,接下来我们就是创建一个针对数据ConfigurationSource,它采用最新Entity Framework Core...在利用ConfigurationBuilder创建出相应Configuration对象之后,我们采用标准Options编程模式读取配置将将其绑定为一个Profile对象。...如果数据表中没有数据,该方法还会利用这个DbContext对象将提供初始化配置添加到数据库中。...该方法首先调用ConfigurationBuilderBuild方法创建出一个Configuration对象,并调用后者扩展方法GetConnectionString根据指定连接字符串名称得到完整连接字符串...创建DbConfigurationSource对象指定Action会完成针对连接字符串设置。

1.2K80

EF Core关系配置

属性赋值(当前赋值也不会出错),也不需要显式地把新创建Comment类型对象添加到DbContext中。...内存占用小、 DB连接占用时间长; 2、DataTable:把所有数据都一次性从数据库服务器都加载到客户端内存中。内存占用大,节省DB连接。...未改变(Unchanged):DbContext正在跟踪此实体,该实体存在于数据库中,其属性值和从数据库中读取到值一致,未发生改变。...已删除(Deleted):DbContext正在跟踪此实体,并存在于数据库中,但在下次调用 SaveChanges 要从数据库中删除对应数据。...;NotEqual:不等于运算; OrElse:短路或运算;Parameter:表达式参数; Tips:一般只有在编写不特定于某个实体类通用框架时候,由于无法在编译器确定要操作类名、属性等,所以才需要编写动态构建表达式树代码

8410

.NET Core开发实战(第29课:定义仓储:使用EF Core实现仓储层)--学习笔记

, capBus, logger) { } } } 为了演示效果,在应用程序启动,添加一行代码 Startup // 这一行代码作用是创建一个 Scope,在这个范围内创建...app.ApplicationServices.CreateScope()) { var dc = scope.ServiceProvider.GetService(); // 确定数据库已经创建...,如果数据库没有创建,这个时候会执行数据自动创建过程,根据模型创建数据库 dc.Database.EnsureCreated(); } 数据注册部分 ServiceCollectionExtensions.../// /// 这个定义就是将连接字符串配置到 dDomainContext /// /// ...,可以很清晰看到,是在 EntityConfiguration 这个目录下面,为每一个模型定义一个映射类,领域模型越来越复杂,数据结构越来越复杂时候,这样组织结构会非常清晰 ?

2.1K11

EF 约定介绍

当前环境为EF Code First开发模式中 一、EF默认约定 1、常用约定 (1)、没有显示指定实体主键时候,EF会默认将长得最像Id属性(且类型为GUID)设为主键 (2)、设计实体,一个实体包含一个集合属性...知道哪些类型包含在当前模型中,因此,我们需要自定义一个ZdyNameDbContext,并继承DbContext,并在自定义DbContext中暴露需要暴露类型,这样在Code First开发模式中,...就可以使用 context(数据库上下文),使用这些预先暴露DbSet类型,具体代码如下:   public class EFStudyDbContext:DbContext {...set; } public string Location { get; set; } public string Num { get; set; } } 6、连接字符串约定...(Connection String Conventions) EF 数据连接约定(Connection String Conventions in Code First) 二、移除约定 EF提供了移除默认约定方法

1.6K100

Entity Framework——读写分离

1 实现 CustomDbContext扩展了DbContext,其构造函数带有形式参nameOrConnectionString,可以在使用CustomDbContext指定数据连接字符串。...--清除默认连接字符串,务必加上!!!...第二次使用allSlaves,即SlaveDbContext属性第二次被调用时,不在计算allSlaves。大部分时间都花费在测试数据库是否可用,因此不在重复计算allSlaves节省了时间。...because the DbContext has been disposed.其原因就在于使用DbContext,慎重使用单例模式,全局DbContext会引起第二次调用出错,即第一次调用后DbContext...保守做法就是只操作主库,一般主从分部在内网两台机器上,网络通信延迟一旦较大,就会造成数据无法同步假象。

1K100

生成数据

EF Core支持两种模式: Code First:简单理解为 先写C#(Model),然后生成数据库。 Database First:现在数据库中建立表,然后生成C#Model。...但是它如何连接数据库?这就需要连接字符串,我们需要为DbContext提供连接字符串,这里有两种方式。...optionsBuilder提供了一个UseSqlServer()这个方法,它告诉Dbcontext将会被用来连接Sql Server数据库,在这里就可以提供连接字符串,这就是第一种方法。...其中Database是DbContext一个属性对象。 EnsureCreated()作用是,如果有数据库存在,那么什么也不会发生。但是如果没有,那么就会创建一个数据库。...它是: 如何安全保存敏感配置数据,例如:连接字符串 保存连接字符串,你可能会想到appSettings.json,但这不是一个想法。

98820
领券