«Как исправить« экземпляр типа сущности »не может быть отслежен, потому что другой экземпляр со значением ключа« {TypeId: 1} »уже отслеживается. - PullRequest
0 голосов
/ 30 сентября 2019

Экземпляр типа сущности «WalletType» не может быть отслежен, поскольку другой экземпляр со значением ключа «{TypeId: 1}» уже отслеживается. При подключении существующих объектов убедитесь, что подключен только один экземпляр объекта с данным значением ключа.

// Открытый класс WalletType.cs WalletType

{
    public WalletType()
    {

    }
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int TypeId { get; set; }


    [MaxLength(150)]
    public string TypeTitle { get; set; }



    public virtual ICollection<Wallet> Wallets { get; set; }
}

//////////////////////////////// //SeedData.cs открытый класс SeedData {public static void Initialize (IServiceProvider serviceProvider) {using (var context = new ApplicationDbContext (serviceProvider.GetRequiredService> ())) {// Поиск любых фильмов. if (context.WalletTypes.Any ()) {return;// БД была посеяна}

            context.WalletTypes.AddRange(
                new WalletType
                {
                    TypeId = 1,
                    TypeTitle = "function1"

                },

                new WalletType
                {
                    TypeId = 1,
                    TypeTitle = "function2"
                }


            );
            context.SaveChanges();
        }
    }

}

/////////////////////////////////////////////////// //Program.cs открытый класс Program {

    public static void Main(string[] args)
    {
        var host = CreateWebHostBuilder(args).Build();

        using (var scope = host.Services.CreateScope())
        {
            var services = scope.ServiceProvider;

            try
            {
                var context = services.
                    GetRequiredService<ApplicationDbContext>();
                context.Database.Migrate();
                SeedData.Initialize(services);
            }
            catch (Exception ex)
            {
                var logger = services.GetRequiredService<ILogger<Program>>();
                logger.LogError(ex, "An error occurred seeding the DB.");
            }
        }

        host.Run();
    }

    public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>();

}

1 Ответ

0 голосов
/ 30 сентября 2019

Это потому, что вы добавляете в WalletType с dame TypeId. Вы можете установить для идентификатора значение auto или указать уникальное значение вручную.

 context.WalletTypes.AddRange(
                new WalletType
                {
                    TypeId = 1,
                    TypeTitle = "function1"

                },

                new WalletType
                {
                    TypeId = 2,
                    TypeTitle = "function2"
                }


            );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...