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

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

一个典型的EF应用大多数情况下是一个DbContext的派生类(derived class)来控制,通常可以使用该派生类调用DbContext的构造函数,来控制以下的东西: (1)、上下文如何连接到数据库...(给定连接字符串) (2)、上下文是通过Code First语法计算模型还是使用EF 设计器 (3)、额外的高级选项 下面是DbContext构造器的常用的用途: 一、DbContext无参构造函数 如果当前...app.config/web.config配置文件中的连接字符串,表示你在应用程序中已经进行了配置,这一点要区分上面的方法. (1)、有Ado.Net使用经历的都知道,一般情况下,数据库连接字符串一般定义在...(2)、如果连接字符串的name属性值和上下文类名不一样,但是还是希望上下文使用配置文件的数据库连接进行数据库连接,这时就需要在上下文构造函数中调用DbContext的带string参数的构造函数,并传入连接字符串的...注:默认情况下,当前的连接字符串使用的是System.Data.SqlClilent作为provider,这里可以被改变通过做一个IConnectionFactory的不同的实现来替换context.Database.DefaultConnectionFactory

1.5K90

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

一、管理数据库连接 1、使用配置文件管理连接之约定 在数据库上下文类中,如果我们只继承了无参数的DbContext,并且在配置文件中创建了和数据库上下文类同名的连接字符串,那么EF会使用该连接字符串自动计算出数据库的位置和数据库名...2、使用已经存在的ConnectionString 如果我们已经有了一个定义数据库位置和名称的ConnectionString,并且我们想在数据库上下文类中使用这个连接字符串,连接字符串如下: DbContext类的有参构造函数,这样一来,我们的数据库上下文就会开始使用该连接字符串了,在Program类中输出Name和Age字段的值: 1 using ExistsConnectionString.EF...无论我们对传入的连接字符串名称如何改变,都是无济于事的,也就是说和数据库上下文类名同名的连接字符串优先权更大。...(即约定大于配置) 3、使用已经存在的连接 通常在一些老项目中,我们只会在项目中的某个部分使用EF Code First,同时,我们想对数据上下文类使用已经存在的数据库连接,如果要实现这个,可将连接对象传给

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

    .NET ORM 的 “SOD蜜”--零基础入门篇

    当然你也可以修改成你实际的连接字符串。 之后,我们的查询示例,都将采用这个连接配置。...注意:最新版本的SOD框架,如果使用的是SqlServer,并且连接字符串指定了数据库名字但实际上没有这个数据库,框架可以自动创建数据库,此功能需要SOD的Code First功能支持,请参考下面“1.5...SOD框架最基本的配置,仅需要这一个地方,这比起EF来说要简单。 如果是SqlServer +EF Code First方式的连接配置,SOD框架也可以使用它这个连接字符串的。...如果你不需要ORM的 Code First功能,这个 DbContext 实现类是不需要写的。.../// /// 使用用户名密码参数来登录,使用泛型OQL查询(GOQL),对于单实体类查询最简单的使用方式。

    1.2K70

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

    数据库提供程序负责以下任务: 数据库连接: 提供程序必须提供连接到数据库的方法,并处理连接字符串。 数据操作: 提供程序需要实现与数据库进行交互的必要命令,包括查询、插入、更新和删除操作。...使用异步操作:对于耗时的操作,使用异步操作可以提高应用程序的响应性。 使用数据库特定的优化:不同的数据库有不同的性能优化方法,了解并使用数据库特定的优化方法可以进一步提高性能。...为了实现跨数据库操作,你必须在 DbContext 中指定对应的数据库提供程序,并在 DbContext 构造函数中提供数据库连接字符串。...确保在使用不同数据库的情况下,为每个 DbContext 配置正确的连接字符串。此外,不同的数据库可能需要不同的迁移和配置设置。在执行迁移时,你需要针对每个数据库单独运行迁移命令。...不同的数据库可能对查询的执行方式有不同的优化,因此在编写查询时,你可能需要根据所使用的数据库进行调整。

    62300

    Entity Framework Core 2.0 新特性

    包含定义导航的实体是所有者。当查询所有者时,默认情况下将包含所有类型。 按照惯例,将为所属类型创建一个影子主键,并通过使用表分割将其映射到与所有者相同的表。...,EF Core迁移不会对其进行创建 2.性能提升方面 2.1DbContext连接池 在ASP.NET Core程序中我们使用EF Core一般都是将自定义DbContext类型注册到依赖注入系统中,...>( options => options.UseSqlServer(connectionString)); 如果使用连接池,则在控制器请求DbContext实例时,将首先检查池中是否有可用的实例...这种新的支持允许以“安全”的方式使用C#字符串插值。这样就可以防止在运行时动态构建SQL时发生的常见SQL注入攻击...., "a%"); select c; 值得注意的是,Like方法带有内存中的实现,当对内存中的数据进行查询时,或者在客户端需要发生相关的内存查询时,可以方便很多.

    3.9K90

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

    CreateHostBuilder()方法中去加入的,所以他无法二次构建,除非web重启,所以在修改了数据库内的配置无法实现热重载, 此处使用的是SqLite去实现的,假设现在框架内换了数据库去实现,去修改...数据库切换 想要解决数据库切换的问题,首先就是把配置构建从Program类中抽离出来,重新构建一个类去创建配置所用到的IConfiguration,故我将配置的初始写在静态方法中,通过传递连接字符串以及数据库类型的方式去构建不同的上下文...好的,代码也已经编辑好了,到底如何使用,效果是怎样的呢?...使用自定义的连接字符串,选择对应的数据库枚举。...可以看到我们首先通过传递连接字符串以及数据库类型初始化生成了IConfiguration,使用的是mysql数据库,切换数据库则只需要更换连接字符串和枚举即可,切换数据库实现。

    1.2K40

    ASP.NET Core 依赖注入(DI)简介

    除了引用特定的实现之外,类请求构造类时提供给它们的抽象(通常是接口)。 将依赖关系提取到接口中并将这些接口的实现提供为参数也是策略设计模式的一个示例。...当系统被设计为使用DI时,有许多类通过它们的构造方法(或属性)请求它们的依赖关系,有一个专门用于创建这些类及其关联的依赖关系的类是有帮助的。...如果服务的构造方法需要一个基元,例如字符串,则可以使用可选参数和配置来注入。 服务的声明周期和注册选项 ASP.NET服务可以配置以下生命周期: Transient 每次请求时创建。...我们已经看到如何通过指定要使用的具体类型来注册具有给定类型的服务实现。 此外,还可以指定一个工厂,然后根据需要用于创建实例。...根据我们如何配置此服务的生命周期,容器将向请求类提供相同或不同的服务实例。

    3K40

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

    前言 公司之前使用Ado.net和Dapper进行数据访问层的操作, 进行读写分离也比较简单, 只要使用对应的数据库连接字符串即可...., 再关闭之前的连接, 才能进行切换 另一种方式是通过监听Diagnostic来将进行查询的sql切换到从库执行, 这种方式虽然可以实现无感知的切换操作, 但不能满足公司的业务需求....我认为最理想的方式是要避免数据库连接的切换, 且能够适应多DbContext的情况, 在创建上下文实例时,就指定好是访问主库还是从库, 而不是在后期再进行数据库切换....因此, 在上下文实例化时,就传入相应的数据库连接字符串, 这样一来DbContext的创建就需要交由我们自己来进行, 就不是由DI容器进行创建了....IUnitOfWork, 在DI中的生命周期是Scoped,在销毁的同时会销毁数据库上下文对象, 下面是它的实现, 为了提高性能使用了Expression来代替反射.

    2.3K00

    Entity Framework——读写分离

    1 实现 CustomDbContext扩展了DbContext,其构造函数带有形式参nameOrConnectionString,可以在使用CustomDbContext时指定数据库连接字符串。...--清除默认的连接字符串,务必加上!!!...获得web.config配置文件中的连接名称 使用静态私钥变量allSlaves来表示从库集合,这样做的好处是:静态私有变量只在使用前初始化一次,当第一次被allSlaves使用时初始化一次,即调用GetAllSlaves...because the DbContext has been disposed.其原因就在于使用DbContext时,慎重使用单例模式,全局的DbContext会引起第二次调用出错,即第一次调用后DbContext...多从库随机选择 当配置了多个从库时,应随机从从库集合中选择一个。于是使用伪随机数生成器Random。

    1.1K100

    配置:自定义配置源

    我们将连接字符串作为配置定义在一个名为“appSettings.json”的JSON文件中。...针对DbConfigurationSource对象的注册体现在扩展方法AddDatabase上,这个方法具有两个参数,分别代表连接字符串的名称和初始的配置数据。...IConfigurationBuilder对象定义的AddDatabase扩展方法上,所以使用起来是非常方便的,那么这个扩展方法背后有着怎样的逻辑实现呢?...该方法首先调用IConfigurationBuilder对象的Build方法创建出一个IConfiguration对象,并调用该对象[A5] 的扩展方法GetConnectionString根据指定的连接字符串名称得到完整的连接字符串...创建DbConfigurationSource对象时指定的Action会完成针对连接字符串的设置。

    72840

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

    介绍 在本文中,我们将会学习如何实现服务器端的分页,搜索和排序功能。从长远来讲,这是一种更好的方式来应对数据集特别大的情况。 我们将会修改前文中的源代码,现在就开始吧!...配置数据库的连接字符串 在写控制器代码之前,我们需要为实体框架配置连接字符串,以便在操作数据库时来连接数据库。因此,我们的连接字符串应该被指定给一个有效的数据源,以便我们在运行时应用不会被打断。...为了做到这一点,请打开 web.config 并为数据库提供连接字符串。在配置文件中,你会发现下面配置节点中的连接字符串,你需要在节点中根据你的系统来修改连接字符串。...当写入 document.ready 文件时,assetListVM.init( ) 函数将会被调用。...我们正在获取 Assets 的引用,以便能够链接到实体框架请求数据,我们可以通过 Count()函数来获取数据集表的数据数目,这个数据将会传递到 DataTablesResponse 构造函数中,成为行为方法的最后一行

    5.5K80

    从EFCore上下文的使用到深入剖析DI的生命周期最后实现自动属性注入

    使用EF的话不可避免要和DbContext打交道,在Core中的常规用法一般是:创建一个XXXContext类继承自DbContext,实现一个拥有DbContextOptions参数的构造器,在启动类...但在EFCore中不同的是,DbContext不再提供无参构造函数,取而代之的是必须传入一个DbContextOptions类型的参数,这个参数通常是做一些上下文选项配置例如使用什么类型数据库连接字符串是多少...我们可以去掉有参构造函数,然后重写DbContext中的OnConfiguring方法,在这个方法中做数据库配置: protected override void OnConfiguring.../efcoredemo.db"); } 即使是这样,依然有不够优雅的地方,那就是连接字符串被硬编码在代码中,不能做到从配置文件读取。反正我忍受不了,只能再寻找其他方案。...如果发生这种情况,数据库连接会一直得不到释放,至于有什么后果大家应该都明白。

    1.3K20

    Entity Framework 4.1 Code-First 学习笔记

    我们将增加一个静态的构造函数,这个静态的构造函数对于整个应用程序域来说建立一个标准,当数据库的上下文初始化的时候,检查数据库的架构是否与模型相符,如果不是的话,将删除数据库然后重新创建它。...默认情况下,将在你的本地机器上,使用上下文对象名称,有许多方式来覆盖这个行为,最简单的方式是在配置文件中增加一个名字为上下文对象名称的数据库连接串,在我这里,叫做 MyDomainContext,还可以通过实现一个构造函数...,然后调用非默认的基类构造函数来实现。...如何在两种覆盖默认约定的方法中进行选择呢?我们的原则是:使用标注来丰富模型的验证规则;使用 OnModelCreated 来完成数据库的约束(主键,自增长,表名,列类型等等)。...当 EF 访问实体的子实体的时候是如何工作的呢?你的集合是 POCO 的集合,所以,在访问的时候没有事件发生,EF 通过从你定义的实体派生一个动态的对象,然后覆盖你的子实体集合访问属性来实现。

    1.6K10

    编程语言:类型系统的本质

    在这个级别,代码和数据没有区别,所以当系统误将代码当成数据,或者将数据当成代码时,就很容易发生错误。...定义一个接口 I , 然后使用不同的结构体对接口 I 进行实现,然后利用接口对象作为形式参数,将不同类型的对象传入并调用相关的函数,实现多态。接口可以进行嵌套实现,通过大接口包含小接口。...泛型类型,如T[],需要一个实际的类型参数来生成一个具体类型。其类型构造函数为(T) -> [T[] type]。...例如,当T是number时,我们得到的类型是一个数值数组number[],而当T是string时,得到的类型是一个字符串数组string[]。这种构造函数也称为“种类”,即类型T[]的种类。...有了这些小构造块,我们就可以建立函子和单子这样的结构。我们不会深入讨论细节,只是简单说明一下。许多领域(如集合论,甚至类型系统)都可以用范畴论来表达。

    2.6K31

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

    下面,我们先来看看一个利用客户端处理的例子。我们将会实现一个具有搜索、排序和分页功能的工作表,正如下图中我们看到的: ?...在写控制器代码之前,我们需要为实体框架配置连接字符串,以便在操作数据库时来连接数据库。因此,我们的连接字符串应该被指定给一个有效的数据源,以便我们在运行时应用不会被打断。...为了做到这一点,请打开 web.config 并为数据库提供连接字符串。在配置文件中,你会发现下面配置节点中的连接字符串,你需要在节点中根据你的系统来修改连接字符串。...但是现在还有一个问题,那就是这是在客户端处理的,当行为被调用时,所有数据会被视图渲染,这样就会造成当大量数据出现时,页面性能变慢或者页面载入时间增加。...在下一篇文章中,我们将会学习到如何通过使用服务器端分页、排序和过滤来使页面呈现的更好。对于具有大量的数据时,这是一个更好的方法。

    6.2K90

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

    前者正式“connectionString.json”设置的连接字符串名称“defaultDb”,后者是一个字典对象,它提供的原始配置正好可以构成一个Profile对象。...ConfigurationBuilder定义的扩展方法AddDatabase上,所以使用起来是非常方便的,那么这个扩展方法背后有着怎样的逻辑实现呢?...DbConfigurationSource的定义,它的构造函数接受两个参数,第一个参数类型为Action的委托对象,我们用它来对创建DbContext采用的...该方法首先调用ConfigurationBuilder的Build方法创建出一个Configuration对象,并调用后者的扩展方法GetConnectionString根据指定的连接字符串名称得到完整的连接字符串...创建DbConfigurationSource对象指定的Action会完成针对连接字符串的设置。

    1.3K80

    EntityFramework Core 学习扫盲

    下文示例中将使用Visual Studio自带的Local Sql Server作为演示数据库进行演示,不过可以放心的是,大部分示例都能流畅地在各种关系型数据库中实现运行,前提是更换不同的DATABASE...当开发者需要进行自定义修改名称时( 比如每种关系型数据库的命名规则不一样,虽然笔者一直喜欢使用帕斯卡命名以保持和项目代码结构中的统一),可以使用以下的方式。...再次重申一遍,备用键和主键有相似之处,它通常用来指定一个明确的外键目标——当开发者不想用单纯无意义的Id作为外键标识时。...常见的关系有1-1,1-n,n-n,除此以外,关系的两边还有可空不可空的控制。那么在EF CORE中,我们怎么实现这些关系呢?...简单来说,当你有依赖注入的需求时,便需要使用第一种构造模型。

    9.6K90
    领券