多重关系的国外关键问题

问题描述 投票:0回答:0

我一直在尝试弄清楚应该如何首先建立这两个模型代码之间的关系。我需要建立两个关系:

  1. 一对一:分支机构应该有联系人,但用户并不总是联系人。为了指定这种关系,分支有一个 ContactPersonId 和 ContactPerson 引用用户的 Id。
  2. 一对多用户可以链接到分支,但不是必须如此。分支可以有零到多个链接到它们的用户。为了指定这种关系,我在 User 中有一个可选的 BranchId,在 Branch 中有一个用户的 ICollection

现在我的问题是,当我创建新分支时,即使联系人确实存在于数据库中,我也会受到外键限制。

public class Branch
{
    public Guid Id { get; set; } = Guid.NewGuid()!;
    public string BranchName { get; set; } = default!;
    [ForeignKey("Id")]
    public Guid? ContactPersonId { get; set; } = default!;
    public User? ContactPerson { get; set; } = default!;

    public DateTime Created { get; set; } = DateTime.Now;
    
    [ForeignKey("BranchId")]
    public ICollection<User>? Users { get; set;  } = new List<User>();

}

用户类别

public class User
{
    public Guid Id { get; set; } = Guid.NewGuid()!;
    public string FullName { get; set; } = default!;
    public string Email { get; set; } = default!;
    public string PhoneNumber { get; set; } = default!;
    public string? Password { get; set; }
    public string? Salt { get; set; }
    public UserRoles Role { get; set; }
    public Guid? BranchId { get; set; }
}
c# entity-framework .net-core
© www.soinside.com 2019 - 2024. All rights reserved.