У меня проблема с моим веб-проектом. Даже после нескольких попыток добавления миграций он не создает таблиц в моей базе данных. Это говорит о том, что база данных уже обновлена. Я пытался использовать Seeder, но это не помогло. Я все еще могу добавлять таблицы с запросами вручную, но с таблицами идентичности это будет проблемой. Мой код в EFDbContext:
protected override void OnModelCreating(ModelBuilder builder)
{
foreach (var relationship in builder.Model.GetEntityTypes().SelectMany(e => e.GetForeignKeys()))
{
relationship.DeleteBehavior = DeleteBehavior.Restrict;
}
base.OnModelCreating(builder);
builder.Entity<DbUserRole>(userRole =>
{
userRole.HasKey(ur => new { ur.UserId, ur.RoleId });
userRole.HasOne(ur => ur.Role)
.WithMany(r => r.UserRoles)
.HasForeignKey(ur => ur.RoleId)
.IsRequired();
userRole.HasOne(ur => ur.User)
.WithMany(r => r.UserRoles)
.HasForeignKey(ur => ur.UserId)
.IsRequired();
});
}
public virtual DbSet<Country> Countries { get; set; }
public virtual DbSet<Category> Categories { get; set; }
public virtual DbSet<Manufacturer> Manufacturers { get; set; }
public virtual DbSet<Product> Products { get; set; }
public virtual DbSet<UserProfile> UserProfiles { get; set; }
public virtual DbSet<FileModel> Files { get; set; }
public virtual DbSet<Subcategory> Subcategories { get; set; }
При запуске:
public void ConfigureServices(IServiceCollection services)
{
services.Configure<CookiePolicyOptions>(options =>
{
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy = SameSiteMode.None;
});
services.AddDbContext<EFDbContext>(options =>
options.UseSqlServer(
Configuration.GetConnectionString("DefaultConnection")));
services.AddIdentity<DbUser, DbRole>(options => options.Stores.MaxLengthForKeys = 128)
.AddEntityFrameworkStores<EFDbContext>()
.AddDefaultTokenProviders();
services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie(options =>
{
options.LoginPath = new Microsoft.AspNetCore.Http.PathString("/Account/Login");
options.AccessDeniedPath = new Microsoft.AspNetCore.Http.PathString("/Account/Login");
});
services.AddTransient<IProduct, ProductRepository>();
services.AddTransient<ICategory, CategoryRepository>();
services.AddTransient<ICountry, CountryRepository>();
services.AddTransient<IManufacturer, ManufacturerRepository>();
services.AddMemoryCache();
services.AddSession();
services.AddMvc()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseAuthentication();
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseSession();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
routes.MapRoute(
name: "categoryfilter",
template: "Product/{action}/{category?}",
defaults: new { Controller = "Product", action = "ListProducts" });
});
}
Я переделывал другой проект, изменяя классы, строку подключения, но сохраняя основной код. Так что я не понимаю проблемы. Если у вас есть какие-либо предположения, напишите их.