我是Entity Framework的新手,正在尝试设置代码以初始化SQL Server LocalDB数据库(如果尚不存在)。
为此,我使用了DbContext.Database.EnsureCreatedAsync()方法,根据文档,该方法将设置数据库(如果尚不存在),或者不执行任何操作(如果数据库已经存在)。 / p>
我第一次调用此方法时,数据库已创建且一切正常。第二次调用此方法时,遇到以下异常:
System.Data.SqlClient.SqlException:'数据库'MyDatabase'已经存在。选择其他数据库名称。'
我试图理解为什么当文档说如果数据库已经存在时,EnsureCreatedAsync方法不会执行任何操作时会引发此异常。
DbContext.Database类似乎没有提供任何方法来检查数据库是否已存在,所以我不能自己绕过sureCreatedasync方法。
我要使用的代码如下:
DbContextOptionsBuilder<MyContext> optionsBuilder = new DbContextOptionsBuilder<MyContext>();
optionsBuilder.UseSqlServer(@"Server=(localdb)\MSSQLLocalDB;Database=MyDatabase;Trusted_Connection=True;AttachDbFileName=MyDatabase.mdf");
MyContext context = new MyContext(optionsBuilder.Options);
await context.Database.EnsureCreatedAsync();