我有使用Entity Framework 6.2的ASP.NET MVC 5应用程序。此应用程序在MS SQL服务器中创建一些记录。
我必须在AWS lambda函数中处理这些记录。为此,我创建了c#.NET Core v2.0 lambda函数。在那里,我根据现有数据库生成模型,如下一篇文章所述 - Getting Started with EF Core on ASP.NET Core with an Existing Database。
生成的模型如下所示:
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; }
}
和OnModelCreating:
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");
});
}
在lambda函数中,我正在处理请求并设置结果:
using (var db = new DataContext(connection))
{
var request = db.Request.First();
request.Result = new Result();
db.SaveChanges();
}
在保存操作中,我得到了例外:
无法在表格中插入标识列的显式值&#39;结果&#39;当IDENTITY_INSERT设置为OFF时。
我检查了解决此问题的不同方法。但是在模型创建方法中已经设置了ValueGeneratedOnAdd
函数。
另外,我尝试将[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
添加到Result.EntityId - 但没有成功。
我在实施中遗漏了什么?
答案 0 :(得分:0)
您正在尝试使用没有值的新Result()初始化request.Result。这可能会导致此错误。