UPDATE-DATABASE返回“值不能为null。参数名称:set'

时间:2019-03-26 07:15:47

标签: c# entity-framework

我正在尝试将数据播种到我的数据库中,但我不断收到错误消息

 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, TEntity[] entities)
at kesws.Migrations.Configuration.Seed(kesws_context context) in C:\Users\JNyingi\source\repos\kesws\Migrations\Configuration.cs:line 83
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

这是班上要播种的人

public class MSG_Header
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public Guid Id { get; set; }

    public string MSGID { get; set; }

    public string RefNo { get; set; }

    public Int16 MSG_FUNC { get; set; }

    public string Sender { get; set; }

    public string Receiver { get; set; }

    public string Version_No { get; set; }

    public string Doc_No { get; set; }

    public string Doc_Group { get; set; }

    public DateTime MSG_Date { get; set; }

    public string Token { get; set; }

}

这是我的种子初始化器

   var headers = new MSG_Header
        {
            MSGID = "u64j515g5f5",
            RefNo = "f9b5f6b5fb6f52b",
            MSG_FUNC = 56,
            Sender = "Austin Evans",
            Receiver = "Linus Tech",
            Version_No = "h26h",
            Doc_No = "g6h1j6h1h6n1h",
            Doc_Group = "sssa",
            MSG_Date = DateTime.Now.AddMonths(-1),
            Token = "wtr6t2r6r2662j64yj5jmjju8i"
        };
        context.MSG_Header.AddOrUpdate(headers);
        context.SaveChanges();

最后是我的上下文

  public class kesws_context: DbContext
{
    public kesws_context(): base("kesws")
    {

    }

    public DbSet<MSG_Header> MSG_Header { get; }


    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();

        modelBuilder.Entity<MSG_Header>()
            .HasKey(x => x.Id);
    }
}

我希望数据不会出现问题。它可以正确创建表,但无法播种数据。我正在使用EF Version 6.1.3。我希望得到解决此问题的帮助

1 个答案:

答案 0 :(得分:2)

您缺少MSG_HeaderDbContext属性的二传手,它看起来应该像这样;

public class kesws_context: DbContext
{

    public DbSet<MSG_Header> MSG_Header { get; set; }
    {...}
}