每次编辑主表时,EF core 1-1关系都会生成新行,而不是更新当前值

我正在使用我的第一个Web应用程序(到目前为止,我还没有很丰富的经验),并且在从剃须刀页面(CUD任务)中保存/编辑主要联系人时遇到问题,它在相关表中生成了ID为值(相同或为空)。

我将主要联系人类别定义为:

public class Contact
{
    [Key]
    public int ID { get; set; }
    public string Surename{ get; set; }
    public string FirstName{ get; set; }
    public int? Location_ID { get; set; }
    [ForeignKey("Location_ID")]
    public Location Location{ get; set; }
    public string Phone { get; set; }
    public int? PhonePrivate_ID { get; set; } 
    [ForeignKey("PhonePrivate_ID ")]
    public PhonePrivate PhonePrivate { get; set; }
}

和带有专用电话号码的相关表(出于安全原因,此分隔是必需的,这不是我的想法):

public class PhonePrivate
{
    [Key]
    public int PhonePrivate_ID { get; set; }
    public Contact Contact { get; set; }
    public string Number { get; set; }
}

当我在表单编辑/创建中定义PhonePrivate号时,这是相对可以的,它会在PhonePrivate表中创建ID为1的新记录,并从表单中创建Number,即使它为null也不应创建任何记录。

但是当我想更改主要联系人字段(例如姓名)时,它将创建新的PhonePrivate_ID,其值与以前相同。

我也尝试了流利的API定义,例如:

modelBuilder.Entity<PhonePrivate>().HasOne(a => a.ID).WithOne(b => b.PhonePrivate_ID);

但没有成功。

恐怕我在EF核心示例中误解了关系定义,并且关系配置错误。

如何建立1-1可选关系?还是我应该从另一端对唯一ID进行约束来进行1-many关系,从而导致DB端强制1-1关系?

wang5412878 回答:每次编辑主表时,EF core 1-1关系都会生成新行,而不是更新当前值

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3095325.html

大家都在问