我用下面的GitHub項目通用存儲庫和UOW模式通用的UnitOfWork及與AutoMapper引發異常庫模式「相同類型的另一實體已經有相同的主鍵值」
https://genericunitofworkandrepositories.codeplex.com/
[HttpPost]
[Route("update")]
public HttpResponseMessage Update(HttpRequestMessage request, ComponentViewModel component)
{
return CreateHttpResponse(request,() =>
{
HttpResponseMessage response = null;
if (!ModelState.IsValid)
{
response = request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
}
else
{
var componentDb = UnitOfWork.Repository<Component>().Find(component.ID);
if (componentDb == null)
response = request.CreateErrorResponse(HttpStatusCode.NotFound, "Invalid component.");
else
{
componentDb = Mapper.Map<ComponentViewModel, Component>(component);
UnitOfWork.Repository<Component>().Update(componentDb); // <-- ERROR'S HERE
UnitOfWork.SaveChanges();
response = request.CreateResponse<ComponentViewModel>(HttpStatusCode.OK, component);
}
}
return response;
});
}
我得到UnitOfWork.Repository<Component>().Update(componentDb);
以下異常附加失敗,因爲另一個實體型「組件」的實體相同類型的已具有相同的主鍵值
我相信這是由於它之前的AutoMapper Mapper.Map代碼,但是,我不確定如何解決該問題。
請告知如何更正使用情況。
請看看我的[ASP.NET MVC的答案 - 附加型「MODELNAME」的實體失敗,因爲另一個相同類型的實體已經具有相同的主鍵值](http://stackoverflow.com/questions/23201907/asp-net-mvc-attaching-an-entity-of-type-modelname-failed- because -another-ENT/39557606#39557606)。 –