using (TransactionScope ts=new TransactionScope()) { for (int i = 0; i < 5; i++) { using (_objDb = new UnicornEntities()) { tblUnicornWorkOrderSpentTime tuwostNew = tuwost; tuwostNew.SpentTimeID = Guid.NewGuid(); tuwostNew.IsDeleted = false; tuwostNew.CreatedByID = new Guid(_ownerId); tuwostNew.CreatedDate = DateTime.Now; tuwostNew.LastModifiedByID = new Guid(_ownerId); tuwostNew.LastModifiedDate = DateTime.Now; _objDb.tblUnicornWorkOrderSpentTime.AddObject(tuwostNew); _objDb.SaveChanges(); } } //_objDb.SaveChanges(); //_objDb.AcceptAllChanges(); ts.Complete(); }
这上面的代码是我测试的,每次重新实例化的时候会出错,我是想一次性提交 如果中间过程出现问题则全部提交,求帮助
using (_objDb = new UnicornEntities()) { using (TransactionScope ts=new TransactionScope()) { for (int i = 0; i < 5; i++) { tblUnicornWorkOrderSpentTime tuwostNew = tuwost; tuwostNew.SpentTimeID = Guid.NewGuid(); tuwostNew.IsDeleted = false; tuwostNew.CreatedByID = new Guid(_ownerId); tuwostNew.CreatedDate = DateTime.Now; tuwostNew.LastModifiedByID = new Guid(_ownerId); tuwostNew.LastModifiedDate = DateTime.Now; _objDb.tblUnicornWorkOrderSpentTime.AddObject(tuwostNew); _objDb.SaveChanges(); } //_objDb.SaveChanges(); //_objDb.AcceptAllChanges(); ts.Complete(); } }
异常: 属性“SpentTimeID”是对象的键信息的一部分,不能修改。
这个异常和上一个一样
using (_objDb = new UnicornEntities()) { //using (TransactionScope ts=new TransactionScope()) //{ for (int i = 0; i < 5; i++) { tblUnicornWorkOrderSpentTime tuwostNew = tuwost; tuwostNew.SpentTimeID = Guid.NewGuid(); tuwostNew.IsDeleted = false; tuwostNew.CreatedByID = new Guid(_ownerId); tuwostNew.CreatedDate = DateTime.Now; tuwostNew.LastModifiedByID = new Guid(_ownerId); tuwostNew.LastModifiedDate = DateTime.Now; _objDb.tblUnicornWorkOrderSpentTime.AddObject(tuwostNew); //_objDb.SaveChanges(); } _objDb.SaveChanges(); //_objDb.AcceptAllChanges(); // ts.Complete(); //} }
这种写法只能加一条,求解答
using (_objDb = new UnicornEntities()) { 放到 for上面 試一下。
试了,还是一样 放到Transaction外面也是一样 目前的错误是重复定义了通过一个表实体,所以循环到第二次就会出错,不让修改
@JacobX:
tuwost 是什麽
你應該 每次 都new 一個新對象出來哦
@無限遐想: 因为还不确定数据量,所以不知道需要new多少个,能给明示么
tuwost也是个实体,是传过来的 然后新实例化了一个放进去的
@JacobX:
tuwostNew 你 這個對象 ,就沒有 變化哦。在循環中,始終是一樣
@無限遐想: 對啊,那我該怎麽解決這個問題呢?我想傳來個集合,然後集合中裝載數據,在這邊循環出來,等动準備完畢了再統一提交
@JacobX:
tblUnicornWorkOrderSpentTime 先 new 一個 對象 出來。然後 賦值就好了
@無限遐想: 因為這裡要循環五次,到第二次的時候我依然new的,但是因為saveChanges了卻不能再提交,會出現錯誤 异常: 属性“SpentTimeID”是对象的键信息的一部分,不能修改。
using (_objDb = new UnicornEntities()) { //using (TransactionScope ts=new TransactionScope()) //{ _objDb.Connection.Open(); DbTransaction tran= _objDb.Connection.BeginTransaction(); for (int i = 0; i < 5; i++) { tblUnicornWorkOrderSpentTime tuwostNew = new tblUnicornWorkOrderSpentTime(); tuwostNew=tuwost; tuwostNew.SpentTimeID = Guid.NewGuid(); tuwostNew.IsDeleted = false; tuwostNew.CreatedByID = new Guid(_ownerId); tuwostNew.CreatedDate = DateTime.Now; tuwostNew.LastModifiedByID = new Guid(_ownerId); tuwostNew.LastModifiedDate = DateTime.Now; _objDb.tblUnicornWorkOrderSpentTime.AddObject(tuwostNew); _objDb.SaveChanges(); } tran.Commit(); //_objDb.SaveChanges(); //_objDb.AcceptAllChanges(); // ts.Complete(); //} }
@JacobX: tuwostNew=tuwost; 這裡 不要這麼賦值。
要 一個一個屬性 賦值。然後 看 Guid.NewGuid(); 是不是每次 都不一樣呢
@無限遐想: 是的额 Guid.NewGuid();每次都不一樣的
@JacobX: SpentTimeID 是關鍵字嗎?不同的實例,是可以新增 成功的哦。或則 你先 把 tuwostNew=tuwost; 去掉 看看
@無限遐想: spentTimeId是主鍵,去掉了也是不好使的,只要saveChanges之後就提示不能修改這個問題,要是不saveChanges或者再外面changes是能添最後一次循環的結果
@JacobX: tuwostNew=tuwost;把 這個 去掉,執行 一下。
@無限遐想: 解決了,saveChangs(false);就好了
using (_objDb = new UnicornEntities()) { using (var ts = new TransactionScope()) { for (int i = 0; i < 5; i++) { tblUnicornWorkOrderSpentTime tuwostNew = tuwost; tuwostNew.SpentTimeID = Guid.NewGuid(); tuwostNew.IsDeleted = false; tuwostNew.CreatedByID = new Guid(_ownerId); tuwostNew.CreatedDate = DateTime.Now; tuwostNew.LastModifiedByID = new Guid(_ownerId); tuwostNew.LastModifiedDate = DateTime.Now; _objDb.tblUnicornWorkOrderSpentTime.AddObject(tuwostNew); #pragma warning disable 612,618 _objDb.SaveChanges(false); #pragma warning restore 612,618 } ts.Complete(); } }
Thank you
批量保存,好像不行吧
呵呵.兄弟实体框架你感觉性能如何?只要看到如此语句.我都害怕他的性能
感觉还行啊 ,方便好用 速度也快
@JacobX:
给我写一个demo好不好.可以运行的.我测试一下,我以前用的时候简直是蜗牛,4.0