2013-09-01 42 views
0

當您嘗試創建從使用複合鍵,我得到錯誤「的序列包含多個匹配的元素」序列包含一個以上的匹配元素 - 複合鍵

一個一對多的關係請幫幫我!

modelBuilder.Entity<PracticePilotScoringInfo>() 
        .HasKey(info => new { info.DriverName, info.Control,info.VehicleClass, info.ScoringInfoId }); 

     modelBuilder.Entity<PracticeScoringInfo>() 
      .HasKey(info => info.Id) 
      .HasMany(info => info.PracticePilotScoringInfos) 
      .WithRequired(info => info.ScoringInfo) 
      .HasForeignKey(info => new { info.DriverName, info.Control, info.VehicleClass, info.ScoringInfoId }); 



     public class PracticeScoringInfo : ScoringInfo 
{ 
    public int GrandPrixId { get; set; } 
    public GrandPrix GrandPrix { get; set; } 

    public virtual ICollection<PracticePilotScoringInfo> PracticePilotScoringInfos { get; set; } 
} 


public class PracticePilotScoringInfo : PilotScoringInfo 
{ 
    public string DriverName { get; set; } 
    public ControlType Control { get; set; } 
    public string VehicleClass { get; set; } 
    public Guid ScoringInfoId { get; set; } 
    public virtual PracticeScoringInfo ScoringInfo { get; set; } 
} 


     public Configuration() 
    { 
     AutomaticMigrationsEnabled = true; 
     AutomaticMigrationDataLossAllowed = true; 

    } 
+0

「序列包含多於一個匹配元件」通常是一個例外LINQ通過'單()'或'的SingleOrDefault()'方法拋出。你在什麼地方使用它?更新數據庫時發生 – haim770

+0

錯誤。 PM> Update-Database -Verbose 使用StartUp項目'Vmso'。 使用NuGet項目'Vmso'。 這是一個「-Verbose」,用​​於SQL語言環境,可以在任何其他應用程序中使用。 System.InvalidOperationException:Последовательностьсодержитболееодногосоответствующегоэлемента вSystem.Linq.Enumerable.SingleOrDefault [TSource](IEnumerable'1源,Func'2謂詞) –

+0

安置自己的數據庫的遷移代碼,以及,然後。 – haim770

回答

0

看起來我在Fluent API映射中沒有被識別。 聲明一個低於工作正常

  modelBuilder.Entity<ScoringInfo>() 
      .HasKey(info => info.Id); 

     modelBuilder.Entity<PracticeScoringInfo>() 
      .HasKey(info => info.Id); 

     modelBuilder.Entity<PilotScoringInfo>() 
        .HasKey(info => new { info.DriverName, info.Control, info.VehicleClass, info.ScoringInfoId }); 

     modelBuilder.Entity<PracticePilotScoringInfo>() 
      .HasKey(info => new { info.DriverName, info.Control, info.VehicleClass, info.ScoringInfoId }); 
相關問題