UPDATE-DATABASE Возвращает 'Значение не может быть нулевым. Имя параметра: set ' - PullRequest
1 голос
/ 26 марта 2019

Я пытаюсь заполнить данные в своей базе данных, но получаю сообщение об ошибке

 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 Ответ

2 голосов
/ 26 марта 2019

Вам не хватает сеттера для свойства MSG_Header в DbContext, оно должно выглядеть следующим образом;

public class kesws_context: DbContext
{

    public DbSet<MSG_Header> MSG_Header { get; set; }
    {...}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...