在我的MVC應用程序中,我一直在使用Repository模式進行DAL。存儲庫模式在更新記錄時發生異常
現在,當我做了選擇一個實體記錄,並更新實體字段值,並執行更新操作,然後得到以下錯誤。
附加一個'DAL.User'類型的實體失敗,因爲另一個相同類型的實體 已經具有相同的主鍵值。如果圖中的任何實體具有 衝突的鍵值,則使用「附加」方法或將實體的狀態設置爲「未更改」或「已修改」時會發生此問題 。這可能是因爲某些實體是新的,並且 尚未收到數據庫生成的密鑰值。在這種情況下,使用 'Add'方法或'Added'實體狀態跟蹤圖形,然後將非新實體的狀態設置爲'Unchanged'或'Modified',因爲 正確。「} System.Exception
下面是倉庫的東西:
public void Update(TEntity entity)
{
if (_context.Entry(entity).State != EntityState.Modified)
{
_dbSet.Attach(entity);
_context.Entry(entity).State = EntityState.Modified;
}
}
調用如下: 在Bussines層庫: Manager類:
private readonly IUnitOfWork _unitOfWork;
private IRepository <User , int> UserRepository
{
get
{
return _unitOfWork.GetRepository<AccountUser, int>();
}
}
public void UpdateUserEntity(UserDTO u)
{
try
{
User model = new User();
UserRepository.Update(Mapper.Map(u, model));
_unitOfWork.SaveChanges();
}
catch (Exception ex)
{
throw;
}
}
請指導我如何解決上述錯誤。
Update()方法的Tentity參數來自哪裏?它是從數據庫中讀取,修改並正在嘗試保存回數據庫的對象嗎?或者它是通過將數據發佈到應用程序中的某個Web端點而創建的模型對象? – 2014-09-03 05:35:53
請在經理層的東西找到問題。 – user3711357 2014-09-03 05:46:38
你可能看看我的答案[ASP.NET MVC - 附加一個類型'MODELNAME'的實體失敗,因爲另一個相同類型的實體已經有相同的主鍵值](http://stackoverflow.com/questions/23201907/ASP淨MVC附着-AN-實體的型MODELNAME失敗的 - 因爲-另一個-ENT/39557606#39557606)。 – 2016-09-18 12:36:07