我正在使用我的第一个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关系?