Entity Framework Core 实现读写分离

在之前的版本中我们可用构造函数实现,其实现在的版本也一样,之前来构造连接字符串,现在相似,构造DbContextOptions<T>

代码如下:

        public SContext(MasterSlave masterSlave) : base(GetOptions(masterSlave))
        {
            // TODO: #639
            //ChangeTracker.QueryTrackingBehavior = QueryTrackingBehavior.NoTracking;
        }

        /// <summary>
        /// 主从关系
        /// </summary>
        /// <param name="writeRead"></param>
        /// <returns></returns>
        private static DbContextOptions<SContext> GetOptions(MasterSlave masterSlave)
        {
            var optionsBuilder = new DbContextOptionsBuilder<SContext>();
            if (masterSlave == MasterSlave.Slave)
            {
                optionsBuilder.UseSqlServer(Config.DbConfig.Read);
            }
            else
            {
                optionsBuilder.UseSqlServer(Config.DbConfig.Write);
            }
            return optionsBuilder.Options;
        }

 

时间: 2024-09-07 19:34:20

Entity Framework Core 实现读写分离的相关文章

【dotnet跨平台】微软昨天宣布正式发布.NET Core RC2和.NET Core SDK Preview 1,还有Entity Framework Core RC2

 [dotnet跨平台]微软昨天宣布正式发布.NET Core RC2和.NET Core SDK Preview 1,还有Entity Framework Core RC2 期待已经的版本终于在昨天发布了 微软昨天宣布正式发布.NET Core RC2和.NET Core SDK Preview 1:https://blogs.msdn.microsoft.com/dotnet/2016/05/16/announcing-net-core-rc2/ 微软昨天宣布正式发布Entity Fra

Entity Framework Core 实现MySQL 的TimeStamp/RowVersion 并发控制

将通用的序列号生成器库 从SQL Server迁移到Mysql 遇到的一个问题,就是TimeStamp/RowVersion并发控制类型在非Microsoft SQL Server数据库中的实现.SQL Server timestamp 数据类型与时间和日期无关.SQL Server timestamp 是二进制数字,它表明数据库中数据修改发生的相对顺序.实现 timestamp 数据类型最初是为了支持 SQL Server 恢复算法.每次修改页时,都会使用当前的 @@DBTS 值对其做一次标记

entity framework core 更新问题

问题描述 InvalidOperationException:Theinstanceofentitytype'User'cannotbetrackedbecauseanotherinstanceofthistypewiththesamekeyisalreadybeingtracked.Whenaddingnewentities,formostkeytypesauniquetemporarykeyvaluewillbecreatedifnokeyisset(i.e.ifthekeyproperty

Entity Framework 实体框架的形成之旅--数据传输模型DTO和实体模型Entity的分离与联合B

在使用Entity Framework 实体框架的时候,我们大多数时候操作的都是实体模型Entity,这个和数据库操作上下文结合,可以利用LINQ等各种方便手段,实现起来非常方便,一切看起来很美好.但是如果考虑使用WCF的时候,可能就会碰到很多相关的陷阱或者错误了.因为实体模型Entity的对象可能包括了其他实体的引用,在WCF里面就无法进行序列化,出现错误:而且基于WCF的时候,可能无法有效利用Express表达式,无法直接使用LINQ等问题都一股脑出现了.本文基于上面的种种问题,阐述了我的整

读写分离子系统

A2D Framework增加了EF支持,加上原先支持ADO.NET: 支持EF方式 支持ADO.NET方式 这次来讲如何让Entity Framework变成nb的读写分离 1. 先设计EF模型, 可以图形方式设计,也可以数据库优先方式设计,总之设计完后,再转换成 Code方式使用(用) 2. 在DbContext类中,删除EF自动添加的报错代码,如下: protected override void OnModelCreating(DbModelBuilder modelBuilder) {

Spring实现动态数据源,支持动态添加、删除和设置权重及读写分离

当项目慢慢变大,访问量也慢慢变大的时候,就难免的要使用多个数据源和设置读写分离了. 在开题之前先说明下,因为项目多是使用Spring,因此以下说到某些操作可能会依赖于Spring. 在我经历过的项目中,见过比较多的读写分离处理方式,主要分为两步: 1.对于开发人员,要求serivce类的方法名必须遵守规范,读操作以query.get等开头,写操作以update.delete开头. 2.配置一个拦截器,依据方法名判断是读操作还是写操作,设置相应的数据源. 以上做法能实现最简单的读写分离,但相应的也

Entity Framework 6:专家版本

随着 Entity Framework 最新主版本 EF6 的推出,Microsoft 对象关系映射 (ORM) 工具达到了新的专业高度,与久负盛名的 .NET ORM 工具相比已不再是门 外汉. EF 已经完全成熟,正在超越以前广泛使用的工具. Entity Framework 已经度过了青涩期,它最初只是供数据库开发者使用的工 具,后来在 .NET 社区的敏捷开发者中间引起轰动. 它学会了如何摆脱应用程序 开发模式,转向了普通旧 CLR 对象 (POCO) 模型,支持以测试和域为中心的软件

通用JdbcDao更新,增加动态数据源,支持权重和读写分离

版本:V1.2.3 本次更新增加了动态数据源的支持,可以十分方便的在配置文件中将原来的单数据源修改成动态数据源,而无须修改任何的业务代码. 下面来看看如何使用动态数据源,关于动态数据源的实现,请看这里:Spring实现动态数据源,支持动态添加.删除和设置权重及读写分离 第一步 当然是在spring中声明数据源bean了 <bean id="dynamicDataSource" class="com.dexcoder.assistant.persistence.Dynam

自定义Unity对象生命周期管理集成ADO.NET Entity Framework

在Unity中,从Unity 取得的实例为 Transient.如果你希望使用多线程方式,就需要在组成时使用lifecycle参数,这时候取出的组件就不再是同一个了.在Unity IOC中,它支持我们对于组件的实例进行控制,也就是说我们可以透明的管理一个组件拥有多少个实例.Unity IOC容器提供了如下几种生命处理方式:# Singleton:一个组件只有一个实例被创建,所有请求的客户使用程序得到的都是同一个实例.# Transient:这种处理方式与我们平时使用new的效果是一样的,对于每次