试图在SaveChanges()中插入数据的System.Data.Entity.Infrastructure.DbUpdateConcurrencyException

时间:2018-12-13 19:46:58

标签: entity-framework exception entity short

我正在尝试使用Entity Framework执行添加。我已经将我的SQL数据库目标更改为另一个实例,更改了某些列的数据类型(从十进制更改为int / smallint)。更改数据库后,我的应用程序将返回异常:

  

“ EntityFramework.dll中发生类型'System.Data.Entity.Infrastructure.DbUpdateConcurrencyException'的异常,但未在用户代码中处理。附加信息:存储更新,插入或删除语句影响意外的行数( 0)。自加载实体以来,实体可能已被修改或删除。刷新ObjectStateManager条目。“

代码的某些部分是:

在第1类中(类别T,Tip.A和Mod.L是枚举):

    obj.GerarLog(Cat.T, Tip.A, Mod.L, "Some Message", cod);

在class2中:

    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();
    }

TABLE_0004的名称空间DAL.Entities包含:

    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相同的数据填充这些字段,然后它起作用。

有人知道一些帮助我的提示吗?

0 个答案:

没有答案