【发布时间】:2015-04-30 16:31:18
【问题描述】:
我有一个 WebApi 2(使用 EntityFramework 6 - Code-First)/Angular SPA(基于 MVC 构建)应用程序。我只想上传我的文件,在浏览器上打开应用程序,然后查看使用我在 web.config 中设置的连接字符串中的信息创建的数据库。
由于我要使用编译后的文件在服务器上创建一个新的 Web 应用程序,我无法在控制台上运行Update-Database 命令或使用Database Migrations 来创建一个新数据库。
我只想编译我的应用程序,更改每个不同域的连接字符串并上传到我的服务器。我希望以这种方式看到每个域都有空表的新数据库。
到目前为止我的尝试
- 我创建了一个具有 SysAdmin 和 DbCreator 角色的数据库用户。
- 我在
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,是否可以将应用程序配置为自动检查连接字符串,如果没有数据库,则在首次运行时创建它?
我将不胜感激有关该主题的一些建议。
【问题讨论】:
-
将此代码放在 Global.asax Start 方法中。 atabase.SetInitializer
(new CreateDatabaseIfNotExists ()); -
天啊! :D -- 编辑:误报,我以为创建了一个新的数据库,但那是我用 update-database 命令创建的:(
-
您必须删除此数据库。您正在使用 CreateDatabaseIfNotExists。
-
您还需要检查运行 Web 应用程序的身份是否有权访问和在服务器上创建数据库。不 - 我看到你涵盖了。对不起!
-
@Fals,我更改了连接字符串中的“初始目录”和“AttachDbFilename”属性。这还不足以创建一个新的数据库吗?
标签: c# asp.net sql-server database entity-framework-6