2016-05-25 10 views
0

Ich versuche zu machen und optional eins zu viele Beziehung mit fließenden API. Aber es scheint nicht, wie ich diesen Fehler an die Arbeit:Optional Eins zu viele Beziehung

InBuildingNavigator.Data.Models.ConnectionPointRoute_Segment: : Multiplicity conflicts with the referential constraint in Role 'ConnectionPointRoute_Segment_Target' in relationship 'ConnectionPointRoute_Segment'. Because all of the properties in the Dependent Role are non-nullable, multiplicity of the Principal Role must be '1'.

Dies ist modelcreation:

 protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     base.OnModelCreating(modelBuilder); 

     modelBuilder.Entity<ConnectionPointRoute>() 
      .HasKey(c => new {c.ConnectionPointId, c.RouteId, c.SegmentId}); 

     modelBuilder.Entity<ConnectionPoint>() 
      .HasMany(c => c.ConnectionPointRoutes) 
      .WithRequired(x => x.ConnectionPoint) 
      .HasForeignKey(c => c.ConnectionPointId); 

     modelBuilder.Entity<Route>() 
      .HasMany(c => c.ConnectionPointRoutes) 
      .WithRequired(x => x.Route) 
      .HasForeignKey(c => c.RouteId); 

     modelBuilder.Entity<Segment>() 
      .HasMany(c => c.ConnectionPointRoutes) 
      .WithOptional(s => s.Segment) 
      .HasForeignKey(s => s.SegmentId); 
    } 

und das ist das Modell:

public class ConnectionPointRoute 
{ 
    public int ConnectionPointId { get; set; } 
    public int RouteId { get; set; } 
    public int? SegmentId { get; set; } 
    public int Position { get; set; } 
    public ConnectionPoint ConnectionPoint { get; set; } 
    public Route Route { get; set; } 
    public Segment Segment { get; set; } 
} 
public class Segment 
{ 
    public Segment() 
    { 
     ConnectionPointRoutes = new List<ConnectionPointRoute>(); 
    } 

    public int SegmentId { get; set; } 
    public int ConnectionPointIdEnd { get; set; } 
    public string ConnectionName { get; set; } 
    public string ConnectionInformation { get; set; } 
    public string Image { get; set; } 
    public string Direction { get; set; } 
    public ICollection<ConnectionPointRoute> ConnectionPointRoutes { get; set; } 
} 

Irgendwelche Gedanken?

Antwort

1

Dies liegt daran, dass Sie versuchen, einen zusammengesetzten Primärschlüssel unter ConnectionPointRoute zu definieren, der SegmentId enthält, der nullwertfähig ist. Sie können keinen Primärschlüssel für eine Spalte, für die eine NULL-Angabe möglich ist, definieren.

+0

Danke! Das war's! –