在我的应用中,我使用EF Core定义了2个实体(代码优先),Meeting
和PostcodeDetail
的定义如下:
public class Meeting
{
public int Id { get; set;}
public PostcodeDetail PostcodeDetail { get; set; }
// other properties removed for brevity
}
public class PostcodeDetail
{
public int Id { get; set; }
public ICollection<Meeting> Meetings { get; set; } = new List<Meeting>();
// other properties removed for brevity
}
当我创建新的Meeting
并尝试按以下方式分配现有的PostcodeDetail
实体时:
var meeting = new Meeting();
var details = context.PostcodeDetails
.SingleOrDefault(i => i.Prefix == prefix);
meeting.PostcodeDetail = details;
context.SaveChanges();
我收到此异常:
Microsoft.EntityFrameworkCore.DbUpdateException:SqlException:当IDENTITY_INSERT设置为OFF时,无法在表'PostcodeDetail'中为标识列插入显式值
当我从数据库中检索现有实体时,我看不到为什么在PostcodeDetail
上执行插入语句-有人能在这里看到我在做什么吗?
编辑:运行SQL Server Profiler时,我可以看到以下内容已执行
在[PostcodeDetail]中插入([Id],[DateCreated],[DateModified],[District],[Prefix],[Region]) 值(@ p0,@ p1,@ p2,@ p3,@ p4,@ p5); ',N'@ p0 int,@ p1 datetime2(7),@ p2 datetime2(7),@ p3 nvarchar(4000),@ p4 nvarchar(4000),@ p5 nvarchar(4000)',@ p0 = 113,@ p1 ='2019-01-02 15:50:49.5874691',@ p2 ='2019-01-02 15:50:49.5874640',@ p3 = N'Guernsey',@ p4 = N'GY',@ p5 = N'Channel Islands'
我不知道为什么会生成插入,因为我正在从数据库中获取PostcodeDetail并在新的Meeting
上引用它