У меня есть основное приложение ASP .Net, которое использует существующие таблицы из базы данных сервера SQL.Так как таблицы существовали до того, как я создал приложение, чтобы построить их модели в приложении, я произвел обратный инжиниринг таблиц с помощью команды:
Scaffold-DbContext "Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models
Используя эту команду, успешно создал модели, и у меня естьбыл в состоянии запросить из таблиц базы данных по мере необходимости до сих пор.Сейчас я работаю над системой регистрации пользователей для приложения и добавила необходимую базовую службу идентификации платформы сущностей ASP .Net, и в качестве части процесса необходимо перенести необходимую модель приложения в базу данных.
Я попытался сначала запустить (в консоли диспетчера пакетов) команду add-migration IdentityAdded -context DBContext
, и произошла ошибка: Add-Migration : A parameter cannot be found that matches parameter name 'context'
.После этого я подумал, что, поскольку я еще не запустил миграцию, мне нужно было запустить команду Add-Migration InitialCreate
, но после выполнения этой команды возникает ошибка:
Exception calling "SetData" with "2" argument(s): "Type 'Microsoft.VisualStudio.ProjectSystem.VS.Implementation.Package.Automation.OAProject' in assembly
'Microsoft.VisualStudio.ProjectSystem.VS.Implementation, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d2940a' is not marked as serializable.
Можетмиграция больше не будет выполняться, так как я сначала пересмотрел таблицы базы данных?Что может быть причиной проблемы?
Вот файл запуска для справки:
startup.cs
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
//using( var context = new ApplicationDbContext())
//{
// context.Database.EnsureCreated();
//}
services.AddDbContext<DBContext>(options => options.UseSqlServer(Configuration.GetConnectionString("Cn")));
services.AddMvc();
services.AddIdentity<ApplicationUser, IdentityRole>()
.AddEntityFrameworkStores<DBContext>()
.AddDefaultTokenProviders();
services.Configure<IdentityOptions>(options =>
{
// Password settings
options.Password.RequireDigit = true;
options.Password.RequiredLength = 8;
options.Password.RequireNonAlphanumeric = false;
options.Password.RequireUppercase = true;
options.Password.RequireLowercase = false;
options.Password.RequiredUniqueChars = 6;
// Lockout settings
options.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromMinutes(30);
options.Lockout.MaxFailedAccessAttempts = 10;
options.Lockout.AllowedForNewUsers = true;
// User settings
options.User.RequireUniqueEmail = true;
});
services.ConfigureApplicationCookie(options =>
{
// Cookie settings
options.Cookie.HttpOnly = true;
options.ExpireTimeSpan = TimeSpan.FromMinutes(30);
// If the LoginPath isn't set, ASP.NET Core defaults
// the path to /Account/Login.
options.LoginPath = "/Account/Login";
// If the AccessDeniedPath isn't set, ASP.NET Core defaults
// the path to /Account/AccessDenied.
options.AccessDeniedPath = "/Account/AccessDenied";
options.SlidingExpiration = true;
});
services.AddPaging();
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseBrowserLink();
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
}
//app.UseIdentity(); //will be deprecated
AuthAppBuilderExtensions.UseAuthentication(app);
app.UseStaticFiles();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=resortDeals}/{action=Index}/{id?}");
//routes.MapRoute(
// name: "DetailsRoute",
// template: "{controller=resortDeals}/{action=Details}/{id}");
}
);
Редактировать
Класс пользователя приложения:
public class ApplicationUser : IdentityUser
{
}