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

Web applications 每次编辑主表时,EF core 1-1关系都会生成新行,而不是更新当前值,web-applications,ef-code-first,razor-pages,asp.net-core-2.2,ef-core-2.2,Web Applications,Ef Code First,Razor Pages,Asp.net Core 2.2,Ef Core 2.2,我正在开发我的第一个Web应用程序(所以我到目前为止还不是很有经验),当从razor页面(CUD任务)中保存/编辑主联系人时出现问题,它会在相关表中生成一个ID为的新行,并带有值(相同或空值) 我已将主要联系人类别定义为: public class Contact { [Key] public int ID { get; set; } public string Surename{ get; set; } public string FirstName{ get;

我正在开发我的第一个Web应用程序(所以我到目前为止还不是很有经验),当从razor页面(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; }
}
以及与私人电话号码相关的表格(出于安全原因,此分离是按需进行的,这不是我的想法):

当我在编辑/创建表单中首次定义PhonePrivate number时,它相对来说还可以,它会在PhonePrivate表中创建ID=1的新记录,并且表单中的数字即使为null,也不会创建任何记录

但当我想更改主联系人字段(例如Name)时,它会创建新的PhonePrivate_ID,其值与以前相同

我还尝试了fluent API定义,如:

modelBuilder.Entity<PhonePrivate>().HasOne(a => a.ID).WithOne(b => b.PhonePrivate_ID);
modelBuilder.Entity();
但是没有成功

恐怕我误解了EF核心示例中的关系定义,并且关系配置不正确


如何处理1-1可选关系?或者我应该在另一端对唯一ID进行约束,从而在DB端强制执行1-1关系吗?

您是否映射到现有数据库,或者是否可以更改实体和数据库表的设计?在处理此不良关系问题时,数据库仍然使用样本数据播种,同时,我做了一个导出到excel的功能,并尝试现在进行导入,以便稍后上传真实数据。但现在数据库可以毫无问题地更改:)
modelBuilder.Entity<PhonePrivate>().HasOne(a => a.ID).WithOne(b => b.PhonePrivate_ID);