这个错误是我使用update-database语句时报错的,我跟踪到错误发生的位置,但我解决不了这个问题,无论是删除数据库或者更改连接字符串都无济于事,当然实体模型和seed方法的相关语句我都确认过没有明显的错误。
虽然用代码插入数据时会报错,但是运行项目时增删改查都没有问题,目前好像可以放着不管,但可能会对我的后续开发产生阻碍,我的时间不多,希望能够尽快解决。
我去看了其他同类问题,情况都与我不同,一些解决方法也参考过了,实在没有办法,第一次发帖求助,希望大神们指点一下。非常感谢。
模型类:
public class Course
{
[DatabaseGenerated(DatabaseGeneratedOption.None)]//主键值由用户提供, 而不是由数据库生成
public int CourseID { get; set; }
[StringLength(50, MinimumLength = 3)]
public string Title { get; set; }
[Range(1, 3)]
public int Level { get; set; }
public int LanguageID { get; set; }
//一对一导航
public virtual Language Languages { get; set; }
//一对多导航是集合属性
public virtual ICollection<Enrollment> Enrollments { get; set; }
public virtual ICollection<Instructor> Instructors { get; set; }
}
seed方法里报错的部分:
var courses = new List<Course>
{
new Course {CourseID = 1050,
Title = "Chemistry",
Level = 3,
LanguageID = languages.Single( s => s.Name == "Engineering").LanguageID,
Instructors = new List<Instructor>()/*将Instructors导航属性初始化为空集合。这样, 便可以使用Instructor Instructors.Add方法添加与此Course相关的实体。 如果未创建空列表, 则无法添加这些关系, 因为Instructors属性将为 null, 并且不Add具有方法。*/
},
new Course {CourseID = 4022,
Title = "Microeconomics",
Level = 3,
LanguageID = languages.Single( s => s.Name == "Economics").LanguageID,
Instructors = new List<Instructor>()
},
new Course {CourseID = 4041,
Title = "Macroeconomics",
Level = 3,
LanguageID = languages.Single( s => s.Name == "Economics").LanguageID,
Instructors = new List<Instructor>()
},
new Course {CourseID = 1045,
Title = "Calculus",
Level = 1,
LanguageID = languages.Single( s => s.Name == "Mathematics").LanguageID,
Instructors = new List<Instructor>()
},
new Course {CourseID = 3141,
Title = "Trigonometry",
Level = 1,
LanguageID = languages.Single( s => s.Name == "Mathematics").LanguageID,
Instructors = new List<Instructor>()
},
new Course {CourseID = 2021,
Title = "Composition",
Level = 2,
LanguageID = languages.Single( s => s.Name == "English").LanguageID,
Instructors = new List<Instructor>()
},
new Course {CourseID = 2042,
Title = "Literature",
Level = 2,
LanguageID = languages.Single( s => s.Name == "English").LanguageID,
Instructors = new List<Instructor>()
},
};
courses.ForEach(s => context.Courses.AddOrUpdate(p => p.CourseID, s));
context.SaveChanges();
报错提示:
System.InvalidOperationException: 序列不包含任何匹配元素
在 System.Linq.Enumerable.Single[TSource](IEnumerable`1 source, Func`2 predicate)
在 MvcMovie.Migrations.Configuration.Seed(SchoolContext context) 位置 E:\MvcMovie\MvcMovie\Migrations\Configuration.cs:行号 82
在 System.Data.Entity.Migrations.DbMigrationsConfiguration`1.OnSeed(DbContext context)
在 System.Data.Entity.Migrations.DbMigrator.SeedDatabase()
在 System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.SeedDatabase()
在 System.Data.Entity.Migrations.DbMigrator.Upgrade(IEnumerable`1 pendingMigrations, String targetMigrationId, String lastMigrationId)
在 System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.Upgrade(IEnumerable`1 pendingMigrations, String targetMigrationId, String lastMigrationId)
在 System.Data.Entity.Migrations.DbMigrator.UpdateInternal(String targetMigration)
在 System.Data.Entity.Migrations.DbMigrator.<>c__DisplayClassc.<Update>b__b()
在 System.Data.Entity.Migrations.DbMigrator.EnsureDatabaseExists(Action mustSucceedToKeepDatabase)
在 System.Data.Entity.Migrations.Infrastructure.MigratorBase.EnsureDatabaseExists(Action mustSucceedToKeepDatabase)
在 System.Data.Entity.Migrations.DbMigrator.Update(String targetMigration)
在 System.Data.Entity.Migrations.Infrastructure.MigratorBase.Update(String targetMigration)
在 System.Data.Entity.Migrations.Design.ToolingFacade.UpdateRunner.Run()
在 System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate)
在 System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate)
在 System.Data.Entity.Migrations.Design.ToolingFacade.Run(BaseRunner runner)
在 System.Data.Entity.Migrations.Design.ToolingFacade.Update(String targetMigration, Boolean force)
在 System.Data.Entity.Migrations.UpdateDatabaseCommand.<>c__DisplayClass2.<.ctor>b__0()
在 System.Data.Entity.Migrations.MigrationsDomainCommand.Execute(Action command)
序列不包含任何匹配元素