Поскольку свойства зависимой роли не являются ключевыми свойствами, верхняя граница кратности зависимой роли должна быть '*' - PullRequest
0 голосов
/ 13 октября 2018

Я знаю, что этот вопрос похож на некоторые, но мои настройки отличаются от этих.Какова правильная конфигурация в EF со следующими классами?

Проблема здесь в том, что Team имеет необязательный DivisionParticipant, но DivisionParticipant также имеет необязательный Team.

public class Team 
{
     [Key]
     public int Id {get;set;}
     public DivisionParticipant DivisionParticipant {get;set;}
}

public class DivisionParticipant
{
     [Key]
     public int Id {get;set;}

     public int? TeamId {get;set;}
     [ForeignKey("TeamId")]
     public Team Team {get;set;}
}

Ошибка

Team_DivisionParticipant_Target:: множественность недопустима в роли «Team_DivisionParticipant_Target» в отношении «Team_DivisionParticipant».Поскольку свойства зависимой роли не являются ключевыми свойствами, верхняя граница кратности зависимой роли должна быть «*».

Ответы [ 2 ]

0 голосов
/ 13 октября 2018

Единственный способ достичь того, чего вы хотите, это:

public class Team 
{
     [Key]
     public int Id {get;set;}
     public DivisionParticipant DivisionParticipant {get;set;}
}

public class DivisionParticipant
{
     [Key, ForeignKey("Team")]
     public int Id {get;set;}

     public Team Team {get;set;}
}

Всякий раз, когда требуется отношение один к одному (или один к нулю или одному), зависимый конец (Участник подразделения в вашем случае) внешний ключ также должен быть его первичным ключом.Если вы этого не сделаете, то получите следующее сообщение об ошибке:

Поскольку свойства зависимой роли не являются ключевыми свойствами , верхняя граница кратности зависимой ролидолжно быть '*'.

0 голосов
/ 13 октября 2018

EF 6 не поддерживает это, так как EF 6 не поддерживает альтернативные ключи.EF Core поддерживает, и теперь EF Core можно использовать из приложений .NET Framework в дополнение к приложениям .NET Core.

Эта модель работает без дополнительной настройки в EF Core, поскольку:

По соглашению альтернативный ключ вводится для вас, когда вы идентифицируете свойство, которое не является первичным ключом, как цель отношения.

Альтернативные ключи - EF Core

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...