[英]Error in Seed Method of Entity Framework, Tables not created in Code First Model
我在EF中使用“代碼優先”方法。 當我嘗試從Package Manager控制台更新數據庫時,出現以下錯誤。
Running Seed method.
System.ArgumentNullException: Value cannot be null.
Parameter name: set
at System.Data.Entity.Utilities.Check.NotNull[T](T value, String parameterName)
at System.Data.Entity.Migrations.DbSetMigrationsExtensions.AddOrUpdate[TEntity](IDbSet`1 set, Expression`1 identifierExpression, TEntity[] entities)
at AKClasses.Migrations.Configuration.Seed(AKClassDb context) in c:\Users\amol.kshirsagar\Documents\AmolKshirsagar\RnD\MVC\MVC5\AKClasses\AKClasses\Migrations\Configuration.cs:line 19
at System.Data.Entity.Migrations.DbMigrationsConfiguration`1.OnSeed(DbContext context)
at System.Data.Entity.Migrations.DbMigrator.SeedDatabase()
at System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.SeedDatabase()
at System.Data.Entity.Migrations.DbMigrator.Upgrade(IEnumerable`1 pendingMigrations, String targetMigrationId, String lastMigrationId)
at System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.Upgrade(IEnumerable`1 pendingMigrations, String targetMigrationId, String lastMigrationId)
at System.Data.Entity.Migrations.DbMigrator.UpdateInternal(String targetMigration)
at System.Data.Entity.Migrations.DbMigrator.<>c__DisplayClassc.<Update>b__b()
at System.Data.Entity.Migrations.DbMigrator.EnsureDatabaseExists(Action mustSucceedToKeepDatabase)
at System.Data.Entity.Migrations.Infrastructure.MigratorBase.EnsureDatabaseExists(Action mustSucceedToKeepDatabase)
at System.Data.Entity.Migrations.DbMigrator.Update(String targetMigration)
at System.Data.Entity.Migrations.Infrastructure.MigratorBase.Update(String targetMigration)
at System.Data.Entity.Migrations.Design.ToolingFacade.UpdateRunner.Run()
at System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate)
at System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate)
at System.Data.Entity.Migrations.Design.ToolingFacade.Run(BaseRunner runner)
at System.Data.Entity.Migrations.Design.ToolingFacade.Update(String targetMigration, Boolean force)
at System.Data.Entity.Migrations.UpdateDatabaseCommand.<>c__DisplayClass2.<.ctor>b__0()
at System.Data.Entity.Migrations.MigrationsDomainCommand.Execute(Action command)
Value cannot be null.
Parameter name: set
以下是我的模特班
我的數據庫上下文類
using System.Data.Entity;
namespace AKClasses.Models
{
public class AKClassDb : DbContext
{
public DbSet<Student> Students;
public DbSet<Subject> Subjects;
}
}
我的學生班
namespace AKClasses.Models
{
public class Student
{
public int ID { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}
}
我的科目
using System.Collections.Generic;
namespace AKClasses.Models
{
public class Subject
{
public int ID { get; set; }
public string Name { get; set; }
public virtual List<Student> Students { get; set; }
}
}
編輯:重要我的Configuration.cs類
namespace AKClasses.Migrations
{
using AKClasses.Models;
using System.Data.Entity.Migrations;
public sealed class Configuration : DbMigrationsConfiguration<AKClasses.Models.AKClassDb>
{
public Configuration()
{
AutomaticMigrationsEnabled = true;
}
protected override void Seed(AKClasses.Models.AKClassDb context)
{
context.Subjects.AddOrUpdate(c => c.Name, new Subject { Name = "Marathi" }, new Subject { Name = "English" });
}
}
}
我能以某種方式看到在SSMS中創建的數據庫,但是看不到表格。
DbSet<T>
應該是屬性,而不是公共字段。
嘗試將它們更改為
public DbSet<Student> Students { get; set; }
public DbSet<Subject> Subjects { get; set; }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.