2 sainsun sainSun 于 2016.05.04 14:15 提问

ef 通过DbCommandInterceptor 修改数据库连接 添加数据异常

我想实现数据库的读写分离 ef6里面加了DbCommandInterceptor的功能
可是修改以后 在添加新数据的时候 抛出异常
“基础提供程序在 Commit 上失败 值不能为 null。 参数名: connection”
但是数据已经成功添加,那位前辈读到过这个问题呢 请指导

   public class EntityCommandInterceptor: DbCommandInterceptor
    {
        private string readConnstring = ConfigurationManager.ConnectionStrings["readConnection"].ToString();
        private string writeConnstring = ConfigurationManager.ConnectionStrings["writeConnection"].ToString();


        public override void ReaderExecuting(DbCommand command, DbCommandInterceptionContext<DbDataReader> interceptionContext)
        {
            string SqlCommand = command.CommandText.ToUpper();
            command.Connection.Dispose();
            command.Connection = new SqlConnection();
            if (SqlCommand.IndexOf("SELECT") == 0 )
            {


                command.Connection.ConnectionString = readConnstring;


            }
            else
            {
                command.Connection.ConnectionString = writeConnstring;
            }

            command.Connection.Open();




            base.ReaderExecuting(command, interceptionContext);
        }

        public override void ScalarExecuting(DbCommand command, DbCommandInterceptionContext<object> interceptionContext)
        {

            command.Connection.Dispose();
            command.Connection = new SqlConnection();

            command.Connection.ConnectionString = readConnstring;
            command.Connection.Open();


            base.ScalarExecuting(command, interceptionContext);
        }
    }

1个回答

CSDNXIAOD
CSDNXIAOD   2016.05.04 14:22

Qt数据库连接、数据查询、添加、修改、删除
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
动态改变数据库连接 in Entity Framework 5
  今天把silverlight 升级到5,ADO.ENT EF也用NUGet升级到5.结果发现5下的EF默认没有4的那种分部方法了。 当然你可以把生成器的属性里面,生成代码的属性替换为default,默认为Note。也可以跟4版本一样有分部方法。 但我发现EF5下面更智能,。更好用。EF的链接字符串有相关的类 EntityConnection 可以操作了。 请参看MSDN:  
EF+winform+程序中修改配置连接 附带数据库
EF应用,WINFORM操作,lanmada表达式应用
EF Code First数据库连接配置
前面几节,使用的都是通过EF Code First创建的新数据库,接下来,将开始使用已存在的数据库。   1、使用配置文件设置数据库连接   App.config   数据库连接字符串的name与Data中NorthwindContext.cs类名相同 "1.0" encoding="utf-8"?> //go.microsoft.com/fwlink/?
EF是怎么操作数据库
1.查询 首先查询的时候new了一个EF上下文对象构造函数调用了父类的构造函数。 传入了一个连接字符串的nane 这个name在 webconfig 的 connectionstring中可以获取到连接字符串 新建EF的时候选的是什么数据库就是生成什么数据库的EF上下文对象 根据配置文件来的 查询的是时候通过IQueryable 下的扩展方法或者 Linq 生成相应的SQL
在MVC中处理异常的总结
无论是桌面程序还是web程序,异常处理都是必须的. 一般的处理方式是, 捕获异常,然后记录异常的详细信息到文本文件或者数据库中. 在Asp.net MVC中可以使用内建的filter——HandleError来处理程序发生的异常。接下来,来看看如何在我们的MVC项目中使用。 要让HandleErrorAttribute特性工作,需要修改我们的Web.config文件配置 system
EF框架demo,可以添加数据
EF框架demo,可以添加数据, EF,C#,Entity Framework,
EF监听生成的所有sql语句(包括插入,删除sql)
1、前言:用linq配合ef做数据相关操作时,如果我们想得到所生成的sql,大概可以像这样。 (1)用.ToTraceString(),当然你要把先把查询语句的类型转成ObjectQuery类型。  var query = from s in context.Students                 where s.Name == "张三"                 sele
MVC4+EF 新手入门:添加数据
1.在数据库中建表UserInfo 2.VS中建立空白解决方案,添加MVC4项目。 3.创建HomeController控制器,添加Index视图,添加Action , AddUserInfo. 4./Home/Index: 用户名:
ASP.NET MVC 初学笔记.1 EF连接数据库的多种方法
手动配置连接数据库 以前ADO各种conn加cmd就完成连接查询了,EF呢~得配置。配置有两种方法,一种是全自动,一种是全手动。 EF有一个基本概念,CODE FIRST和DB FIRST以及MODEL FIRST,我认为区别就是:你完全建好了数据库就DF,你还没想好数据库的设计就CF,CF意思就是你不用设计数据库了,你想使用的变量等等在Models里建好实体类,然后数据库创建Table和字段都是web后台操作过程中完成了,相当。。。省心。。吧。。。 先记录一下全手动配置(实际上是为CF准备的,但DF要用也
EntityFrameWork Code First 多数据库以及自定义字符串的使用+连接字符串加密调用
关于使用EF-CodeFirst中多数据库使用 以及 自定义字符串的使用 +连接字符串加密调用 度娘好久都没有发现有资料能直接解决这3个问题的文章 这里就把自己摸索的经验给大家分享一下 不多说直接上代码 ef-cf=EntityFrameWork Code First 1,常规ef-cf引用之后 生成的代码以及config配置 丢出来,怎么生成的这个就自己找 很多 我这里是