У меня проблема с добавлением миграции для моей базы данных в ASP.NET Core 8.0.
Вот код
ПриложениеDbContext:
public ApplicationDbContext(DbContextOptions<DbContext> options) : base(options)
{
}
public DbSet<Single1> Singles { get; set; }
public DbSet<Department> Departments { get; set; }
public DbSet<Person> Persons { get; set; }
public DbSet<Day> Days { get; set; }
public DbSet<Month> Months { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Single1>().HasData(
new Single1 { SetId = 1, UserId = 1, SubcriptionDate = new DateTime(2020, 12, 12), Set1 = 1, Set2 = 0, Set3 = 1 }
);
modelBuilder.Entity<Department>().HasData(
new Department { DepartmentId = 1, DepartmentName = "IT", PersonalIds = { 1 } }
);
modelBuilder.Entity<Person>().HasData(
new Person { Name = "Trung", PersonalId = 1, Set1 = 1, Set2 = 1, Set3 = 1 }
);
modelBuilder.Entity<Day>().HasData(
new Day { DayId= 1, Date = new DateTime(2020, 12, 12), DepartmentId = 1 }
);
modelBuilder.Entity<Month>().HasData(
new Month { MonthId = 1, Month1 = new DateTime(2020, 12, 12), DepartmentId = 1 }
);
}
}
День.cs:
public class Day
{
[Key]
[Required]
public int DayId { get; set; }
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:DD/MM/yyyy}",ApplyFormatInEditMode = true)]
public DateTime Date { get; set; }
[Required]
public int DepartmentId { get; set; }
[ForeignKey("DepartmentId")]
public Department Department { get; set; }
}
Месяц.cs:
public class Month
{
[Key]
public int MonthId { get; set; }
[DisplayFormat(DataFormatString = "{0:MM/yyyy}", ApplyFormatInEditMode = true)]
public DateTime Month1 { get; set; }
public int DepartmentId { get; set; }
[ForeignKey("DepartmentId")]
public Department Department { get; set; }
}
Человек.cs:
public class Person
{
[Key]
public int PersonalId { get; set; }
public string Name { get; set; }
[DefaultValue(0)]
public int Set1 { get; set; }
[DefaultValue(0)]
public int Set2 { get; set; }
[DefaultValue(0)]
public int Set3 { get; set; }
}
Отдел.cs:
public class Department
{
[Key]
public int DepartmentId { get; set; }
[Required]
public virtual List<int> PersonalIds { get; set; }
[ForeignKey("PersonalId")]
public virtual List<Person> Persons { get; set; }
public string? DepartmentName { get; set; }
}
Одиночный.cs:
public class Single1
{
[Key]
public int SetId { get; set; }
[Required]
public int UserId { get; set; }
[Required]
[DisplayFormat(DataFormatString = "{0:DD/MM/yyyy}", ApplyFormatInEditMode = true)]
public DateTime SubcriptionDate { get; set; }
[Range(0, 10, ErrorMessage = "Chỉ có tối đa 10 xuất cho 1 người")]
[DefaultValue(0)]
public int Set1 { get; set; }
[Range(0, 10, ErrorMessage = "Chỉ có tối đa 10 xuất cho 1 người")]
[DefaultValue(0)]
public int Set2 { get; set; }
[Range(0, 10, ErrorMessage = "Chỉ có tối đa 10 xuất cho 1 người")]
[DefaultValue(0)]
public int Set3 { get; set; }
}
appsettings.json:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*",
"ConnectionStrings": {
"DefaultConnection": "Server=Admin;Database=BTAnCaRedo;Trusted_Connection=True;TrustServerCertificate=True"
}
}
программа.cs:
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddControllersWithViews();
builder.Services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection")));
builder.Services.AddRazorPages();
builder.Services.AddScoped(typeof(IRepository<>), typeof(Repository<>));
builder.Services.AddTransient<IUnitOfWork, UnitOfWork>();
var app = builder.Build();
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Home/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapControllerRoute(
name: "default",
pattern: "{area=User}/{controller=Home}/{action=Index}/{id?}");
app.Run();
Я пробую все, что доступно сразу в Google и видео на Youtube, но все равно не могу это исправить. Ошибка в заголовке выскакивает снова и снова. Проект по умолчанию также верен, поэтому я не вижу, в чем проблема.
Дважды проверьте правильность строки подключения. Попробуйте добавить «Encrypt=Да;» к этому. У нас уже была эта ошибка раньше, и в ASP.NET Core 8.0 она оказалась «Encrypt = Yes;» в строке подключения это исправлено.
Ваш ApplicationDbContext выглядит именно так? Он должен находиться внутри класса ApplicationDbContext, который наследует DbContext. Я не уверен насчет сервера в строке подключения, мои не такие. Используете ли вы несколько проектов в одном решении? Обязательно выберите тот, где находится контекст, и убедитесь, что установлены все инструменты для ef core.
Если вы действительно застряли, я предлагаю вам начать все сначала с нового проекта.
Он находится внутри класса ApplicationDbContext, который наследует DbContext. Я использую несколько проектов в одном решении, правильно выбираю проект с контекстом и все инструменты для ef-core установлены.
Попробуйте переопределить метод OnConfiguring, как это защищенное переопределение void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder .UseSqlServer("Ваша строка подключения"); }
Или попробуйте эту команду: обновление базы данных dotnet ef --verbose --project имя проекта, где контекст — --startup-project имя запускаемого проекта
Теперь выдает эту ошибку: Невозможно создать «DbContext» типа «». Исключение «Невозможно разрешить службу для типа Microsoft.EntityFrameworkCore.DbContextOptions`1[Microsoft.EntityFrameworkCore.DbContext]» при попытке активировать «BTAnCaRedo.DataAccess.Data.ApplicationDbContext». был выброшен при попытке создать экземпляр.