EF - 如何使(复合)外键可选

时间:2014-11-13 11:18:57

标签: c# .net entity-framework ef-code-first

我有3个模型:Order,Organization和OrderOrganisation。

OrderOrganisation的存在不是强制性的......但我不知道如何告诉EF。

目前,如果我编写查询,它使用内部联接而不是外部联接来加入OrderOrganisation。

我想将其作为模型的一部分(如果可能)而不是在上下文中(因为它是一个大型数据库,我认为将上下文片段用于逻辑)。

以下是我的模特。

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

    public virtual ICollection<OrderOrganisation> OrderOrganisations { get; set; }
}

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

    public virtual ICollection<OrderOrganisation> OrderOrganisations { get; set; }
}

public class OrderOrganisation
{
    [Key, Column(Order = 0)]
    public int OrderId { get; set; }

    [Key, Column(Order = 1)]
    public int OrganisationId { get; set; }

    [ForeignKey("OrderId")]
    public virtual Order Order { get; set; }

    [ForeignKey("OrganisationId")]
    public virtual Organisation Organisation { get; set; }
}

我需要包括哪些内容?

我认为我需要制作可以为空的东西,但我无法解决问题。

由于

1 个答案:

答案 0 :(得分:0)

您不必在EF上的这种情况下创建交叉表。下面的代码对我来说已经足够了我认为

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

    public virtual ICollection<Organisation> OrderOrganisations { get; set; }
}

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

    public virtual ICollection<Order> OrderOrganisations { get; set; }
}

然后EF将创建OrganisationOrders命名表。