当我更新此实体时,出现此错误:
数据库类与视图模型中的类不同
但我将其转换。
请帮助我,并向我发送正确的代码。
谢谢
我的错误:
附加类型为'DomainModel.Models.Tbl_Images'的实体失败,因为相同类型的另一个实体已经具有相同的主键值。如果图形中的任何实体具有相互冲突的键值,则使用“附加”方法或将实体的状态设置为“不变”或“修改”时,可能会发生这种情况。这可能是因为某些实体是新实体,尚未收到数据库生成的键值。在这种情况下,请使用“添加”方法或“已添加”实体状态来跟踪图形,然后根据需要将非新实体的状态设置为“未更改”或“已修改”
我的代码:
0
1
1
答案 0 :(得分:0)
一种方法是先查询图像。然后更新值并显式调用SaveChanges
或SaveChangesAsync
。
try
{
var updatingImage = _db.Tbl_Images.FirstOrDefault(i => i.Id == model.Id);
if (updatingImage != null)
{
// either manually map those values or use auto mapper.
updatingImage.Code = model.Code;
updatingImage.Image = model.Image;
updatingImage.Language = model.Language;
updatingImage.Title = model.Title;
_db.Tbl_Images.Update(updatingImage);
_db.SaveChanges();
}
...
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
答案 1 :(得分:0)
您可以尝试以下操作:
public bool Update ( ImagesEditVM model )
{
bool result = false;
try
{
var existing = db.Tbl_Images.Find ( model.Id );
if ( existing == null )
{
context.Add ( model );
}
else
{
db.Entry ( existing ).CurrentValues.SetValues ( model);
}
context.SaveChanges ( );
result = true;
return result;
}
catch ( Exception ex )
{
throw new Exception ( ex.Message );
}
}
查看此Link