【发布时间】:2020-07-15 22:30:55
【问题描述】:
我有一个简单的 Web API,我正在尝试首先使用实体框架核心代码,并在 AWS RDS 上托管一个外部 sql 服务器数据库。我的目标是让 EF 根据我的上下文和模型自动创建我的模型数据库/表,这是我第一次使用 Swagger 创建对象时。虽然当我尝试使用 Swagger 将对象发布到我的 API 时,不会创建表,而是出现以下错误: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?
数据库上下文:
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);
....
appsettings.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"
【问题讨论】:
-
InitializeDatabase()被调用了吗? -
对不起,我的意思是它实际上是在运行时执行的吗?
-
尝试调用
context.Database.EnsureCreated();,我不是 EF 专业人士,您需要阅读此方法,因为我认为您应该只调用一次。 stackoverflow.com/questions/42355481 -
那个方法有效吗?
-
确实成功了,再次感谢
标签: c# asp.net amazon-web-services asp.net-web-api