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