Entity Framework的使用问题

1.add(),SaveChange()失败后,怎么把之前的Add的Entity移除掉啊
不移除的话,不管后面做什么操作SaveChange()还是会失败,报同一个错误的

我要进行的是批量新增的操作,现在如果其中某一项出错了,就会停止了

 ProduceEntities db = dbEntities;
        private static ProduceEntities dbEntities
        {
            get
            {
                //更改为存线程内
                DbContext dbContext = CallContext.GetData(typeof(EntitiesHelper<T>).Name) as DbContext;
                if (dbContext == null)
                {
                    dbContext = new ProduceEntities();
                    dbContext.Configuration.ProxyCreationEnabled = false;
                    //dbContext.Configuration.LazyLoadingEnabled = false;
                    //dbContext.Configuration.ProxyCreationEnabled = false;
                    //dbContext.Configuration.ValidateOnSaveEnabled = false;
                    //将新创建的 ef上下文对象 存入线程
                    CallContext.SetData(typeof(EntitiesHelper<T>).Name, dbContext);
                }
                return dbContext as ProduceEntities;
            }
        }

2.一次Add,一个主对象和多个子对象(主外键,导航属性)
SaveChange() ==0 ,而且没有报错,而且主对象的ID已经非0了,查看数据库主子对象都已经保存成功了,这个是什么情况啊,为什么SaveChange() ==0?

这种情况最好使用事务处理

现在我的做法是,Catch出SaveChange()的Exception后,就new一个DbContext,重置静态的DbContext,但感觉这个方法不正道