2013-09-01 43 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 }); 
相关问题