gpt4 book ai didi

c# - 应用程序启动时自动在服务器上创建数据库

转载 作者:搜寻专家 更新时间:2023-10-30 23:45:02 24 4
gpt4 key购买 nike

我有一个 WebApi 2(使用 EntityFramework 6 - Code-First)/Angular SPA(建立在 MVC 上)应用程序。我只想上传我的文件,在浏览器上打开应用程序,然后查看使用我在 web.config 连接字符串中设置的信息创建的数据库。

因为我要使用编译后的文件在服务器上创建一个新的 Web 应用程序,所以我不能在控制台上运行 Update-Database 命令或使用 Database Migrations创建一个新的数据库。

我只想编译我的应用程序,更改每个不同域的连接字符串并上传到我的服务器。我希望通过这种方式为每个域看到一个包含空表的新数据库。


到目前为止我尝试了什么

  • 我创建了一个具有 SysAdminDbCreator 角色的数据库用户。
  • 我在 DbContext 中使用了 CreateDatabaseIfNotExists 初始化器

我的 DataContext 类

public class DataContext : DbContext
{
public DataContext() : base("DefaultConnection")
{
Database.SetInitializer<DbContext>(new CreateDatabaseIfNotExists<DbContext>());
Database.Initialize(true);
}
}

连接字符串

<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=Company01;AttachDbFilename=|DataDirectory|\Company01.mdf;Integrated Security=True" providerName="System.Data.SqlClient" />

现在,我的具有此配置的应用程序无法在应用程序启动时(或在我实际访问数据库的页面上)创建数据库。我必须从控制台使用 Update-Database 命令才能创建数据库。

使用 EntityFramework,是否可以将应用配置为自动检查连接字符串,如果没有数据库,则在首次运行时创建它?

我将不胜感激关于这个主题的一些建议。

最佳答案

首先,如果您在连接字符串中指定了数据库,但它不存在,您将无法连接。理想情况下,检查连接是否失败,然后在连接字符串中没有 Initial Catalog= 的情况下进行连接。然后您应该能够发出 sql 命令来创建数据库,然后关闭此连接并返回到指定数据库的那个。

我不知道那时 EF 是否能够做到这一点:如果您是代码优先的话,它应该可以。如果您首先是数据库(我一直这样做),那么可能不是,您必须直接发出所有创建等命令。

关于c# - 应用程序启动时自动在服务器上创建数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29973137/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com