Я использую Entity Framework для заполнения элемента управления сеткой, и я получаю некоторые ошибки, такие как содержание заголовка, когда я пытаюсь сделать обновления.
Ошибка:
Оператор хранения, обновления или удаления затронул неожиданное количество строк ({0}). Объекты могут быть изменены или удалены с момента загрузки объектов. Обновите записи ObjectStateManager.
И я предпринял несколько попыток, например:
- Проверено, что первичный ключ правильный;
- Там нет такогокод типа [
Bind(Exclude)]
; - Я получил эти данные из базы данных, прежде чем пометил их как измененные;
И вот мой код:
var expProfitDtos = value.ExpProfits as List<FileExpProfitDto>;
if (expProfitDtos != null && expProfitDtos.Any(ep => ep.EditStatus == EditStatus.Added))
{
GenerateFileExpProfitSorting(expProfitDtos, value.File);
}
expProfitDtos = expProfitDtos.OrderByDescending(c => c.EditStatus).ToList();
var expProfits = ProcessDetailsFileExpProfitEntityState<FileExpProfitDto>(expProfitDtos);
И деталь ProcessDetailsFileExpProfitEntityState
():
protected List<FileExpProfit> ProcessDetailsFileExpProfitEntityState<TDto>(List<TDto> dto, IMapper dtoToEntityMapper = null) where TDto : UpdatableDto
{
if (dto == null)
{
return null;
}
DbContext ctx = GetDbContext<FileExpProfit>();
List<FileExpProfit> result = new List<FileExpProfit>();
foreach (var dtoItem in dto)
{
FileExpProfit itemEntity = null;
FileExpProfit itemCacheEntity = null;
if (dtoToEntityMapper == null)
{
itemCacheEntity = dtoItem.AutoMapper<FileExpProfit>();
}
else
{
itemCacheEntity = dtoToEntityMapper.Map<FileExpProfit>(dtoItem);
}
if (dtoItem.EditStatus == EditStatus.Modified)
{
itemEntity = DbContext.FileExpProfits
.Where(d => d.FileExpProfitID == itemCacheEntity.FileExpProfitID)
.FirstOrDefault();
itemEntity.GrpCode = itemCacheEntity.GrpCode;
itemEntity.UserID = itemCacheEntity.UserID;
//ctx.Set<FileExpProfit>().Attach(itemEntity);
ctx.Entry(itemEntity).State = EntityState.Modified;
var bo=DbContext.SaveChanges() > 0;
Console.WriteLine(bo);
}
result.Add(itemEntity);
}
return result;
}
При выполнении программы появляется ошибка: DbContext.SaveChanges().
Кто-нибудь видел это или кто-нибудь знает, чтосообщение об ошибке относится к?