【问题标题】:FK column to mulitple tables POCOFK 列到多个表 POCO
【发布时间】:2018-03-02 12:12:57
【问题描述】:

我想留在 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; }
}

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 非常感谢!我装饰了导航属性。
    • 我对这种方法的担忧是,当您为 BetaA 和 BetaB 分配不同的 ID 值时会发生什么 - 两个预期值之一将无法保存
    • 嗯.. 我明白你的意思 - 但由于 ETL 过程,不应允许插入这些值。
    猜你喜欢
    • 2011-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-04
    • 2020-09-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多