EF核心类外键关系

时间:2019-02-14 13:04:07

标签: .net entity-framework

考虑两个类:

public class EntA
{
    public Guid Id { get; set; }
    [ForeignKey("EntityId")]
    public ICollection<TranslationValue> Translations { get; set; }
}
public class EntB
{
    public Guid Id { get; set; }
    [ForeignKey("EntityId")]
    public ICollection<TranslationValue> Translations { get; set; }
}

然后有TranslationValue类:

public class TranslationValue : IEntity
{
    public Guid Id { get; set; }
    public Guid EntityId { get; set; }
    public string Value { get; set; }
}

一切正常,除了一件事:我不能将外键作为TranslationValue中的条目。EntityId将同时引用EntA和EntB。

问题是:如何以与上述完全相同的方式定义关系,而无需实际创建外键。

我当前使用的解决方法是创建迁移,然后删除负责创建实际外键的部分。

1 个答案:

答案 0 :(得分:0)

  

问题是:如何以与上述完全相同的方式定义关系,而无需实际创建外键。

这是不可能的,因为单个外键将如何映射到两个不同的表? 您的TranslationValue模型必须如下:

public class TranslationValue : IEntity
{
    public Guid Id { get; set; }

    public Guid EntAId { get; set; }
    public Guid EntBId { get; set; }

    public string Value { get; set; }

    public EntA EntA {get; set;}
    public EntB EntB {get; set;}
}