У меня есть очень простая схема, упрощенная далее на этот вопросEF необязательно один ко многие кратность ошибки
Table: Airport
IATA char(3) Primary Key
Name varchar(20)
Table: Airport_Terminal
IATA char(3) (comp key1)
TerminalName (comp key2)
POCOs
public sealed class Airport
{
[Key]
public string IATA { get; set; }
public string Name { get; set; }
public ICollection<AirportTerminal> Terminals { get; set; }
}
public class AirportTerminal
{
[Key, Column(Order = 0)]
public string IATA { get; set; }
[Key, Column(Order = 1)]
public string Terminal { get; set; }
public Airport Airport { get; set; }
}
AirportTerminal Конфигурацию
modelBuilder.Entity<AirportTerminal>()
.HasOptional<Airport>(s => s.Airport)
.WithMany(s => s.Terminals)
.HasForeignKey(s => s.IATA);
Некоторых аэропорты (в моем приложении) несколько терминалов и некоторых не. Я просто хочу отреагировать на недвижимость Терминалов, если для данного аэропорта установлены Терминалы. Если я ввожу одну запись для каждого аэропорта, эта конфигурация работает. Но когда я пытаюсь для поиска любого аэропорта, я получаю:
"One or more validation errors were detected during model generation: Multiplicity conflicts with the referential constraint in Role 'AirportTerminal_Airport_Target' in relationship 'AirportTerminal_Airport'. Because all of the properties in the Dependent Role are non-nullable, multiplicity of the Principal Role must be '1'."
Исследования показывают, что эта ошибка возникает, когда ненулевое свойство существует на дополнительном элементе, поэтому он не может быть установлены в нуле. AirportTerminal содержит две строки с нулевым значением.
Любые идеи?
Пока вы отвечали на это .. я сделал именно это. Благодарю. .Это отлично работает :) –