Я пытаюсь выполнить добавление с помощью Entity Framework.Я изменил назначение базы данных SQL на другой экземпляр, изменив тип данных некоторых столбцов (с десятичного на int / smallint).После изменения базы данных мое приложение возвращает исключение:
"Исключение типа 'System.Data.Entity.Infrastructure.DbUpdateConcurrencyException' возникло в EntityFramework.dll, но не было обработано в коде пользователя.Дополнительная информация: оператор обновления, вставки или удаления магазина затронул неожиданное количество строк (0). Возможно, объекты были изменены или удалены с момента загрузки объектов. Обновить записи ObjectStateManager. "
Некоторые частикод:
В классе 1 (Cat.T, Tip.A и Mod.L являются перечислениями):
obj.GerarLog(Cat.T, Tip.A, Mod.L, "Some Message", cod);
В классе 2:
public int GerarLog(Cat cat, Tip tip, Mod mod, string message, int cod)
{
DALEntity.TABLE_0004 nov = new DAL.Entities.TABLE_0004();
nov.FIELD1 = DateTime.Now;
nov.FIELD2 = (short)tip;
nov.FIELD3 = (short)cat;
nov.FIELD4 = (int)mod;
nov.FIELD5 = cod;
nov.FIELD6 = message;
obj2.LogProcessamentoRepository.Add(nov);
return (int)nov.FIELD0;
}
Вclass3:
public virtual void Add(params T[] items)
{
foreach (T item in items)
context.Entry(item).State = System.Data.Entity.EntityState.Added;
context.SaveChanges();
}
Пространство имен DAL.Entities для TABLE_0004 содержит:
public partial class TABLE_0004
{
public long FIELD0 { get; set; }
public System.DateTime FIELD1 { get; set; }
public short FIELD2 { get; set; }
public short FIELD3 { get; set; }
public int FIELD5 { get; set; }
public Nullable<int> FIELD4 { get; set; }
public string FIELD6 { get; set; }
public virtual TABLE_0094 TABLE_0094 { get; set; }
public virtual TABLE_0000 TABLE_0000 { get; set; }
public virtual TABLE_0003 TABLE_0003 { get; set; }
public virtual TABLE_0011 TABLE_0011 { get; set; }
}
В базе данных SQL только поля FIELD2 и FIELD3 являются полями SMALLINT.Я подозреваю, что есть связь по этому поводу, потому что в режиме отладки переменные «nov» не имеют значения для внешних ключей 00 (FIELD2) и 11 (FIELD3).
Остановка приложения в отладкеВ этом режиме я скопировал бы сгенерированный INSERT в SQL Management Studio, заполнил поля теми же данными Visual Studio, и он работает.
Кто-нибудь знает какой-нибудь совет, чтобы помочь мне?