Я удаляю базу данных, создаю ее снова и заполняю данными.
С этим типом реестра все отлично работает
services.AddDbContext<Context>
(
options => options.UseSqlServer(Configuration["Database"]
);
Но, когда я добавляю ServiceLifetime.Transient
, мгновенно выдает различные исключения, такие как:
services.AddDbContext<Context>
(
options => options.UseSqlServer(Configuration["Database"], ServiceLifetime.Transient
);
SqlException: Нарушение ограничения PRIMARY KEY 'PK_myTable'. Невозможно вставить дубликат ключа в объект 'dbo.myTable'.
Дубликат значения ключа ([guid]).
Заявление было прекращено.
SqlException: невозможно вставить явное значение для столбца идентификаторов в таблице 'myTable', когда для IDENTITY_INSERT установлено значение OFF.
Что может быть не так?
public void Configure(IApplicationBuilder app, IHostingEnvironment env, Context context, SignInManager<User> sm, UserManager<User> um)
{
(...)
context.Database.EnsureDeleted();
context.Database.EnsureCreated();
new Initializer(context, um).Initialize().Wait();
(...)
}
public class Initializer
{
private readonly UserManager<User> _userManager;
private readonly Context _ctx;
public Initializer(Context c, UserManager<User> um)
{
_ctx = c;
_userManager = um;
}
public async Task Initialize()
{
filling my objects with data
(No, I'm not setting value to Id anywhere)
_ctx.SaveChanges();
}
Могу поспорить, что это из-за async / .Wait ()?