Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实体框架6使用现有数据插入表抛出DbUpdateException_C#_Entity Framework 6 - Fatal编程技术网

C# 实体框架6使用现有数据插入表抛出DbUpdateException

C# 实体框架6使用现有数据插入表抛出DbUpdateException,c#,entity-framework-6,C#,Entity Framework 6,我在实体框架6和MSSQL服务器上使用C。 我正在尝试将数据插入到包含现有历史数据的表中。 下面是一段代码,但我得到了一个违反主键约束的DbUpdateException。 我检查了SQL表和EDMX,它们都有正确的ID列作为标识列。 此外,EDMX的SSDL和CSDL正确设置了标识 更新:SQL表已经有数据,但SaveChanges尝试将标识从0开始插入到此表中,忽略现有数据,导致此PK约束冲突错误 请帮忙 public int PersistEntity(T entity) { va

我在实体框架6和MSSQL服务器上使用C。 我正在尝试将数据插入到包含现有历史数据的表中。 下面是一段代码,但我得到了一个违反主键约束的DbUpdateException。 我检查了SQL表和EDMX,它们都有正确的ID列作为标识列。 此外,EDMX的SSDL和CSDL正确设置了标识

更新:SQL表已经有数据,但SaveChanges尝试将标识从0开始插入到此表中,忽略现有数据,导致此PK约束冲突错误

请帮忙

public int PersistEntity(T entity)
{
    var newRecords = 0;
    using (var context = new myEntities())
    {
        using (var dbcontext = context.Database.BeginTransaction())
        {
            var entity = new tblEntity();
            // ...
            context.tblEntities.Add(entity);
            //context.tblEntities.Attach(entity); // also tried this without success.

            try
            {
                newRecords = context.SaveChanges();
                dbcontext.Commit();
            }
            catch (DbUpdateException)
            {
                throw; // thrown on context.SaveChanges()
            }
        }
    }
    return newRecords;
}
以下是tblenty的代码:

namespace MyLibrary.Infrastructure.Data
{
    using System;
    using System.Collections.Generic;

    public partial class tblEntity
    {
        public tblEntity()
        {
            this.tblCalibrations = new HashSet<tblCalibration>();
            this.tblOutput = new HashSet<tblOutput>();
        }

        public int iID { get; set; }
        public string cPlateName { get; set; }
        public int iInstrument { get; set; }
        public int iStatus { get; set; }
        public int iTest { get; set; }

        public virtual tblTest tblTest { get; set; }
        public virtual ICollection<tblCalibration> tblCalibrations { get; set; }
        public virtual tblInstrument tblInstrument { get; set; }
        public virtual ICollection<tblOutput> tblOutput { get; set; }
        public virtual tblStatus tblStatus { get; set; }
    }
}

如果要调试,请使用SQL Server Profiler查看对数据库执行了哪些查询。tblEntity的主键是什么?PK集在哪里?它位于SQL表中,并且带有一个约束。另外,我在EDMX模型中检查了tblEntity上的iID列是一个int,标识为StoreGeneratedPattern选项?