Решение разделено на 3 проекта: RRDA.Web (веб-приложение), RRDA.Data (модели данных), RRDA.Core (базовые классы с интерфейсом плагинов импорта данных, валидаторами и т. д.).
Я работаю с подходом «сначала код», поэтому мне интересны инструменты EF для первоначального создания базы данных и обновления структуры, пока я меняю саму структуру базы данных (конечно, с помощью кода).
Я определил DBContext в RRDADbContext:
Код: Выделить всё
public class RRDADbContext(DbContextOptions options) : DbContext(options)
{
public DbSet ReportTypes { get; set; }
public DbSet ReportFiles { get; set; }
public DbSet ReportEntities { get; set; }
public DbSet ReportProperties { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity().HasIndex(p => new { p.Name, p.ReportEntityId });
// TODO: ...
}
}
Код: Выделить всё
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Design;
namespace RRDA.Data
{
public class RRDAContextFactory : IDesignTimeDbContextFactory
{
public RRDADbContext CreateDbContext(string[] args)
{
var optionsBuilder = new DbContextOptionsBuilder();
optionsBuilder.UseSqlServer("Server=.\\SQLEXPRESS;Database=RRDA.Db;Trusted_Connection=True;MultipleActiveResultSets=true;TrustServerCertificate=True;Integrated Security=True;Encrypt=True");
return new RRDADbContext(optionsBuilder.Options);
}
}
}
Код: Выделить всё
dotnet ef migrations add InitialCreate -p RRDA.Data -s RRDA.Web
Код: Выделить всё
dotnet ef database update -p RRDA.Data -s RRDA.Web
Разрешение CREATE DATABASE отклонено в базе данных «master».
Но пока я вижу, что у меня есть все привилегии, необходимые для создания и изменения базы данных...
На самом деле я могу «вручную» создать базу данных изнутри VisualStudio, но, конечно, я не могу понять, запущен ли инструмент ef с теми же привилегиями... как это проверить?
Кстати, сообщение об исключениях довольно длинное, но оно только добавляет стек вызовов без особой информации...
Подробнее здесь: https://stackoverflow.com/questions/798 ... a-database
Мобильная версия