一个表如何有两个可为空的FK,而其中只有一个具有值?

我有一个Project,可以由该组织的Member拥有,也可以由ExternalResourcePerson拥有。这意味着每个FK MemberIdExternalResourcePersonId可以为空,但不能同时为空。如何建立这种关系?

我刚刚开始在其中引入“外部资源人”一词。也许ExternalResourcePerson类应该有一个List<Project>而不是List<ExternalResourcePersonEngagement>

这些是类:

public class Project
{
    public int Id { get; set; }

    // A Project can either have a Member as owner ...
    public int MemberId { get; set; }
    public Member ProjectOwner { get; set; }

    // ... or an ExternalResourcePerson
    public int ExternalResourcePersonId { get; set; }
    public ExternalResourcePerson ExternalProjectOwner { get; set; }
}

public class Member
{
    public int Id { get; set; }

    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Email { get; set; }
    public string Phone { get; set; }
    public string Address1 { get; set; }
    public string Address2 { get; set; }
    public string Zip { get; set; }

    public List<Project> Projects { get; set; }
}

public class ExternalResourcePerson
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Address { get; set; }
    public string Organisation { get; set; }
    public string Expertise { get; set; }
    public string Email { get; set; }
    public string Phone { get; set; }
    public string Notes { get; set; }
    public List<ExternalResourcePersonEngagement> Engagements { get; set; }
}

public class ExternalResourcePersonEngagement
{
    public int Id { get; set; }
    public int ProjectId { get; set; }
    public Project Project { get; set; }
    public int ExternalResourcePersonId { get; set; }
    public ExternalResourcePerson Person { get; set; }
}

我见过this question,但无法对我的案子应用任何答案。

cmwapfang 回答:一个表如何有两个可为空的FK,而其中只有一个具有值?

只需将它们声明为可为空,然后添加负责正确分配它们的方法即可。

一些非生产就绪解决方案的基本示例:

MOD()

您还可以添加一些方法来检索此人。

本文链接:https://www.f2er.com/3084103.html

大家都在问