zoukankan      html  css  js  c++  java
  • 一个实体对象不能由多个 IEntityChangeTracker 实例引用

    直接来解决办法:

    public partial class BaseDAL<T> where  T:class
    {
            GzItcastEntities db = new GzItcastEntities();
        
             /// <summary>
            /// 新增
            /// </summary>
            /// <param name="model"></param>
            /// <returns></returns>
            public virtual T Add(T model)
            {
                db.Set<T>().Add(model);
                db.SaveChanges();
                db.Entry<T>(model).State = EntityState.Detached;  //增加这句可以解决问题
                return model;
            } 
    
    
            /// <summary>
            /// 根据条件查询一个实体对象
            /// </summary>
            /// <param name="where"></param>
            /// <returns></returns>
            public virtual T GetModel(Expression<Func<T, bool>> where)
            {
                T model = db.Set<T>().Where(where).ToList().FirstOrDefault();
                db.Entry(model).State = EntityState.Detached;  //增加这句可以解决问题
                return model;
            } 
    }
    说明:
    vs2010才会抛出这个异常,2012不会
    在vs2012 GzItcastEntities 默认继承于DbContext

    在vs2010 GzItcastEntities 默认继承于ObjectContext  

    如果继承于
    ObjectContext  请调用Detach()方法(未实验)

    补充:又发现个新办法,
    DbContext 存入Session中,

    GzItcastEntities = DbContextHelper.GetDbContext() as GzItcastEntities ;
    
    
     public static class DbContextHelper
        {
            private static DbContext db = null;
            private const string SessionKey_DbContext = "DbContext";
            
    
            /// <summary>
            /// 获得DbContext
            /// </summary>
            /// <returns></returns>
            public static DbContext GetDbContext()
            {
                db = HttpContext.Current.Session[SessionKey_DbContext] as DbContext;
                if (db == null)
                {
                    db = new GZRA_ADSP_DBEntities();
                    HttpContext.Current.Session[SessionKey_DbContext] = db;
                }
                return db;
            }
        }
    
    
    
     
  • 相关阅读:
    vagrant up报错 Warning: Authentication failure. Retrying...解决方案
    node读写Excel操作
    批量转换word为pdf
    分享7个shell脚本实例--shell脚本练习必备
    shell脚本实例,通向shell脚本大师的必经之路
    前端优化DNS预解析
    如何选择开源协议
    深入理解document.referrer的用法
    使用 WebRTC 构建简单的前端视频通讯
    深入理解WebRTC
  • 原文地址:https://www.cnblogs.com/msbbc/p/3060883.html
Copyright © 2011-2022 走看看