C# 实体框架唯一 ID SQL Server 保存



当我单击按钮时,我需要在SQL Server中保存相同的值。为了我的需要,我使用这个函数:

private void AggiornaVersioneCappario()
        {
            try
            {
                if (modelCap.AZCPR00F.Count() > 0)
                {
                    modelCap.Database.ExecuteSqlCommand("TRUNCATE TABLE [AZCPR00F]");
                    modelCap.Database.ExecuteSqlCommand("DBCC CHECKIDENT('AZCPR00F', RESEED, 0);");
                    modelCap.AZCPR00F.Local.Clear();
                }
                StreamReader reader = new StreamReader(str_azcpr00f);
                string contents;
                while ((contents = reader.ReadLine()) != null)
                {
                    AZCPR00F verCap = new AZCPR00F();
                    verCap.CPRVER = contents.Substring(1, 5);
                    verCap.CPRDDE = contents.Substring(7, 8);
                    verCap.CPRDSC = contents.Substring(16, 8);
                    modelCap.AZCPR00F.Add(verCap);
                }
                modelCap.SaveChanges();
            }
            catch (Exception ex)
            {
                throw;
            }
        }

当我第一次这样做时,也是在填充表格的情况下,一切正常。问题是当我在同一会话中第二次单击时,我有此异常:

存储更新、插入或删除语句影响了意外的行数 (0)。自加载实体以来,实体可能已被修改或删除。有关了解和处理乐观并发异常的信息,请参阅 http://go.microsoft.com/fwlink/?LinkId=472540。

我阅读了参考资料,但我无法解决添加到而不是保存更改时发生的问题。感谢大家

不需要刷新 DbContext。看起来您没有关闭流阅读器:

private void AggiornaVersioneCappario()
{
    try
    {
        if (modelCap.AZCPR00F.Count() > 0)
        {
            modelCap.Database.ExecuteSqlCommand("TRUNCATE TABLE [AZCPR00F]");
            modelCap.Database.ExecuteSqlCommand("DBCC CHECKIDENT('AZCPR00F', RESEED, 0);");
            modelCap.AZCPR00F.Local.Clear();
        }
        StreamReader reader = new StreamReader(str_azcpr00f);
        string contents;
        while ((contents = reader.ReadLine()) != null)
        {
            AZCPR00F verCap = new AZCPR00F();
            verCap.CPRVER = contents.Substring(1, 5);
            verCap.CPRDDE = contents.Substring(7, 8);
            verCap.CPRDSC = contents.Substring(16, 8);
            modelCap.AZCPR00F.Add(verCap);
        }
        modelCap.SaveChanges();
            reader.Close();
    }
    catch (Exception ex)
    {
        throw;
    }
}

最新更新