nos*_*bor 25 sql sql-server triggers entity-framework entity-framework-4
我为获得例外的人找到了一个解决方案:
存储更新,插入或删除语句会影响意外的行数(0).自实体加载后,实体可能已被修改或删除.刷新ObjectStateManager条目.
但是,无论如何我有疑问.
我读了主题: 实体框架:"存储更新,插入或删除语句影响了意外的行数(0)." 对于VMAtm,Robert Harvey
就我而言,我有例如表格文章:
Articles
------------
article_id
title
date_cr
date_mod
deleted
Run Code Online (Sandbox Code Playgroud)
我有触发器:
create trigger articles_instead_of_insert
on articles instead of insert
as
SET NOCOUNT ON;
insert into articles(
article_id,
title,
date_cr,
date_mod,
deleted
)
select
user_id,
title,
isnull(date_cr, {fn NOW()}),
isnull(date_mod, {fn NOW()}),
isnull(deleted, 0)
from inserted;
go
Run Code Online (Sandbox Code Playgroud)
当我删除此触发器时,我不会得到此异常.所以这个触发器就是问题.现在我有一个问题 - 为什么?我应该做点什么吗?
nos*_*bor 37
解:
try {
context.SaveChanges();
} catch (OptimisticConcurrencyException) {
context.Refresh(RefreshMode.ClientWins, db.Articles);
context.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)
小智 6
你更好地更新你的保存方法.....如果你savechange()
在每个addobject和deleteobject或修改后调用实体上下文的方法:
public void Save(object entity)
{
using (var transaction = Connection.BeginTransaction())
{
try
{
SaveChanges();
transaction.Commit();
}
catch (OptimisticConcurrencyException)
{
if (ObjectStateManager.GetObjectStateEntry(entity).State == EntityState.Deleted || ObjectStateManager.GetObjectStateEntry(entity).State == EntityState.Modified)
this.Refresh(RefreshMode.StoreWins, entity);
else if (ObjectStateManager.GetObjectStateEntry(entity).State == EntityState.Added)
Detach(entity);
AcceptAllChanges();
transaction.Commit();
}
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
94350 次 |
最近记录: |