У меня есть класс, как это:Создание нескольких автореферентных внешних ключей к одной и тем же таблицам
[Table("Tree")]
public class Tree
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int TreeId { get; set; }
public int? TreeOneId { get; set; }
[ForeignKey("TreeOneId")]
public virtual Tree TreeOne { get; set; }
public int? TreeTwoId { get; set; }
[ForeignKey("TreeTwoId")]
public virtual Tree TreeTwo { get; set; }
}
Когда я создаю базу данных из этого определения класса, я получаю ошибку:
Unable to determine the principal end of an association between the types 'Tree' and 'Tree'. The principal end of this association must be explicitly configured using either the relationship fluent API or data annotations.
Если я удалю одно из свойств и создаю определение класса следующим образом:
[Table("Tree")]
public class Tree
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int TreeId { get; set; }
public int? TreeOneId { get; set; }
[ForeignKey("TreeOneId")]
public virtual Tree TreeOne { get; set; }
//public int? TreeTwoId { get; set; }
//[ForeignKey("TreeTwoId")]
//public virtual Tree TreeTwo { get; set; }
}
Он создает правильное значение t Ables. Как я могу получить эту ошибку? Я попытался указать порядок столбцов, добавив уникальный индекс. Я могу обойти это, используя List TreeOne, и он создаст соответствующую таблицу ссылок, но я бы предпочел не использовать это решение.
Удивительный раствор. Я видел много примеров, которые показали, как использовать это отношение между двумя классами, но не содержаться в одном классе. – Magn3s1um