代码改变世界

EF实现线程内唯一,去掉脏数据

2012-06-15 22:13  shy_carson  阅读(602)  评论(0)    收藏  举报

//线程内唯一
    //第一i个职责:隔离数据库访问层对EF上下文的直接依赖
    public class ObjectContextFactory : IObjectContextFactory
    {
        public  ObjectContext GetCurrentObjectContext()
        {
           
            //从线程的数据槽里面获取上下文的实例
            ObjectContext context = (ObjectContext)CallContext.GetData(typeof(ObjectContextFactory).FullName);
           
            //如果获取的为空,那么创建一个新的上下文,并将此上下文放到线程的数据槽里面去
            if(context == null)
            {
                context = new DataModelContainer();
                CallContext.SetData(typeof(ObjectContextFactory).FullName,context);
            }
            return context;
        }

    }