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;
            }
        }
    
    
    
     
  • 相关阅读:
    第12组 Alpha事后诸葛亮
    第12组 Alpha冲刺(6/6)
    第12组 Alpha冲刺(5/6)
    2019 SDN上机第4次作业
    2019 SDN阅读作业
    第12组 Alpha冲刺(4/6)
    第12组 Alpha冲刺(3/6)
    第12组 Alpha冲刺(2/6)
    2019 SDN上机第3次作业
    第10组 Alpha冲刺(4/6)
  • 原文地址:https://www.cnblogs.com/msbbc/p/3060883.html
Copyright © 2011-2022 走看看