EF核心-使用对自身的引用更新实体会尝试将其删除吗?

时间:2018-09-28 14:03:47

标签: c# entity-framework-core

在我正在研究的项目中,我们有一个类Person,该类具有两个引用CreatedById的属性:UpdatedByIdCreatedById。当我尝试更新具有UpdatedById-属性的Idpublic class Person { [Key] public Guid Id { get; set; } public string FirstName { get; set; } public string LastName { get; set; } public string Email { get; set; } public string PhoneNumber { get; set; } public DateTimeOffset CreatedDate { get; set; } public Guid CreatedById { get; set; } [ForeignKey(nameof(CreatedById))] public virtual Person CreatedBy { get; set; } public DateTimeOffset UpdatedDate { get; set; } public Guid UpdatedById { get; set; } [ForeignKey(nameof(UpdatedById))] public virtual Person UpdatedBy { get; set; } } 的人员时,出现以下异常:

  

SqlException:DELETE语句与SAME TABLE冲突   参考约束“ FK_Persons_Persons_CreatedById”

我们的人员类别如下:

Person

我们还使用流利的API配置protected override void OnModelCreating(ModelBuilder builder) { builder.Entity<Person>(e => { e.HasOne(p => p.CreatedBy); e.HasOne(p => p.UpdatedBy); }); } ,如下所示:

SET NOCOUNT ON
DELETE FROM [Persons]
WHERE [Id] = '{guid}' 

在除上述情况外的所有情况下,更新人员均有效。当我检查EF生成的SQL时,它将尝试删除我要更新的人:

context.SaveChanges()

有人知道为什么会这样吗?我想念什么?

更新

我监视要通过变更跟踪器更新的实体。直到调用Modified为止,它的状态为SaveChanges。至于为什么在调用{{1}}时EF试图删除该人,我仍然不知道。

0 个答案:

没有答案