У меня есть простой веб-API, и я пытаюсь сначала использовать код ядра платформы сущностей, с внешней базой данных sql сервера, размещенной на AWS RDS. Моя цель состоит в том, чтобы EF автоматически создавал базу данных / таблицы моделей на основе моего контекста и моделей, когда я впервые использую Swagger для создания объекта. Хотя, когда я пытаюсь опубликовать объект в своем API с помощью Swagger, таблицы не создаются, и вместо этого я получаю следующую ошибку: Microsoft.EntityFrameworkCore.DbUpdateException: An error occurred while updating the entries. See the inner exception for details.
---> Microsoft.Data.SqlClient.SqlException (0x80131904): Invalid object name 'Users'.
Неправильно ли я настроил EF?
Db Контекст:
namespace FitnessTrackerAPI.Data
{
public class FitnessTrackerAPIContext : DbContext
{
public FitnessTrackerAPIContext (DbContextOptions<FitnessTrackerAPIContext> options)
: base(options)
{
}
public DbSet<FitnessTracker.UserData> Users { get; set; }
public DbSet<FitnessTracker.WorkoutData> Workouts { get; set; }
}
}
Я также добавил в Startup.cs следующее:
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<FitnessTrackerAPIContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("FitnessTrackerAPIContext")));
....
private void InitializeDatabase(IApplicationBuilder app)
{
using (var serviceScope = app.ApplicationServices.GetService<IServiceScopeFactory>().CreateScope())
{
var context = serviceScope.ServiceProvider.GetRequiredService<FitnessTrackerAPIContext>();
context.Database.Migrate();
}
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
//Apply pending migrations
InitializeDatabase(app);
....
Строка подключения в настройках приложения. json: "ConnectionStrings": {
"FitnessTrackerAPIContext": "Server=fitnessapi.clxnbxbuoxx1.eu-west-1.rds.amazonaws.com,1433;User ID=XXXXX;Password=XXXXX; Initial Catalog=fitnessapi; Database=fitnessapi; Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False"