C# EF Core:包含值GeneratedAnd trows的列;无法为标识列插入显式值…“;
我有一个ASP.NET MVC 5应用程序,它使用实体框架6.2。此应用程序在MS SQL server中创建一些记录 我必须在AWS lambda函数中处理这些记录。为此,我创建了c#.NET Core v2.0 lambda函数。在那里,我从现有数据库生成模型,如下一篇文章所述- 生成的模型如下所示:C# EF Core:包含值GeneratedAnd trows的列;无法为标识列插入显式值…“;,c#,entity-framework,.net-core,aws-lambda,entity-framework-core,C#,Entity Framework,.net Core,Aws Lambda,Entity Framework Core,我有一个ASP.NET MVC 5应用程序,它使用实体框架6.2。此应用程序在MS SQL server中创建一些记录 我必须在AWS lambda函数中处理这些记录。为此,我创建了c#.NET Core v2.0 lambda函数。在那里,我从现有数据库生成模型,如下一篇文章所述- 生成的模型如下所示: public partial class Request { public int EntityId { get; set; } public Result Result
public partial class Request
{
public int EntityId { get; set; }
public Result Result { get; set; }
}
public partial class Result
{
public int EntityId { get; set; }
public Request Entity { get; set; }
}
在模型创建时:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Request>(entity =>
{
entity.HasKey(e => e.EntityId);
entity.ToTable("Request", "mySchema");
});
modelBuilder.Entity<Result>(entity =>
{
entity.HasKey(e => e.EntityId);
entity.ToTable("Result", "mySchema");
entity.HasIndex(e => e.EntityId).HasName("IX_EntityId");
entity.Property(e => e.EntityId).ValueGeneratedOnAdd();
entity.HasOne(d => d.Entity)
.WithOne(p => p.Result)
.HasForeignKey<Result>(d => d.EntityId)
.OnDelete(DeleteBehavior.ClientSetNull)
.HasConstraintName("FK_mySchema.Result_mySchema.Request_EntityId");
});
}
在保存操作中,我得到了异常:
当identity\U insert设置为OFF时,无法在表“结果”中为identity列插入显式值
我检查了解决这个问题的不同方法。但是在模型创建方法中已经设置了ValueGeneratedOnAdd
函数
另外,我尝试将[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
添加到Result.EntityId中,但没有成功
我在实现中遗漏了什么?您正在尝试使用没有值的new Result()初始化request.Result。这可能会导致此错误。您能否显示您试图映射的现有
请求表?PK和FK配置有问题,但不能确切地说没有看到表列和约束。对不起,我的意思是Result
table。嘿,RredCat,在哪里可以解决这个问题?我有一样的…@Borbea,是的。但我不再在这家公司工作了,我也无法获得源代码和解决方案。我记得,这是一个非常简单的解决方案。@rredCat我使用ValueGeneratedOnAddOrUpdate解决了我的问题,因为我在更新记录时收到了上述错误。无论如何谢谢你!我不认为这是个问题。我试着设置“实体”,但没用。EntityId应该是自动生成的。
using (var db = new DataContext(connection))
{
var request = db.Request.First();
request.Result = new Result();
db.SaveChanges();
}