3 внешних ключа для одной таблицы в один столбец - PullRequest
0 голосов
/ 02 июля 2018

есть 2 объекта: «А» и «Б». enter image description here По сути, в «А» есть поля:

 - A_id (PK)
 - B1_id (FK)
 - B2_id (FK)
 - B3_id (FK)

По сути, "B": B_id и другие поля. Можно ли сделать отношения к EF и MS один к одному, где "B1_id", "B2_id" и "B3_id" являются внешними ключами для одного свойства B_id в таблице "B". Если это возможно, то как я могу назвать свойства навигации в классе «А», думаю, их должно быть три?

Ответы [ 2 ]

0 голосов
/ 03 июля 2018
public class A
{
    public int Id { get; set; }
    //another properties

    public virtual B B1 { get; set; }
    public int B1Id { get; set; }

    public virtual B B2 { get; set; }
    public int B2Id { get; set; }

    public virtual B B3 { get; set; }
    public int B3Id { get; set; }
}

public class B
{
    public int Id { get; set; }
    //another properties

    [InverseProperty(B1)]
    public virtual ICollection<A> A1 { get; set; }
    [InverseProperty(B2)]
    public virtual ICollection<A> A2 { get; set; }
    [InverseProperty(B3)]
    public virtual ICollection<A> A3 { get; set; }
}
0 голосов
/ 02 июля 2018

Вы можете сделать что-то вроде:

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

        public int B1Id { get; set; }
        public int B2Id { get; set; }
        public int B3Id { get; set; }

        [ForeignKey("B1Id")]
        public B B1 { get; set; }

        [ForeignKey("B2Id")]
        public B B2 { get; set; }

        [ForeignKey("B3Id")]
        public B B3 { get; set; }
    }

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

        public string Name { get; set; }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...