FK列到多个表POCO

时间:2017-09-21 08:23:21

标签: c# sql-server entity-framework poco

我想留在POCO,但我陷入了僵局:

Public class Alpha()
{
        public int ID { get; set; }
        [ForeignKey("")]
        public int BetaId { get; set; }

        public virtual BetaA BetaA{ get; set; }
        public virtual BetaB BetaB{ get; set; }
}

Public class BetaA()
{
        public int ID { get; set; }
}

Public class BetaB()
{
        public int ID { get; set; }
}

如何让Alpha.BetaId成为POCO中BetaA.ID和BetaB.ID的ForeignKey?

如果其他人偶然发现了这个

我使用的解决方案

Public class Alpha()
{
        public int ID { get; set; }
        public int BetaId { get; set; }

        [ForeignKey("BetaId")]    
        public virtual BetaA BetaA{ get; set; }
        [ForeignKey("BetaId")]
        public virtual BetaB BetaB{ get; set; }
}

Public class BetaA()
{
        public int ID { get; set; }
}

Public class BetaB()
{
        public int ID { get; set; }
}

1 个答案:

答案 0 :(得分:0)

让BetaA和BetaB共享主键然后通过BetaA引用BetaB

您还可以使用外键属性修饰nav属性,并将int属性指定为两者的FK,尽管我自己没有测试过这种情况(我在移动设备上)。试一试,让我知道!