我们可以让 Entity Framework Code First 默认创建一个 SQL Server Express 数据库而不是 LocalDB 吗?

Can we have Entity Framework Code First create a SQL Server Express db other than a LocalDB by default?

在 Visual Studio 2013 年,我创建了一个 ASP .NET MVC web 项目,具有 ASP.Net 身份。

并且 Entity Framework Code First 在

中创建了一个 SQL Server Express LocalDB 数据库

APP_Data 默认文件夹。

但我更喜欢 SQL Server Express 数据库,因为当我在本地 IIS 中托管 Web 应用程序时,SQL Server Express LocalDB 无法与 IIS 一起使用。

所以我的问题是,

  1. 当我使用 EF Code First 创建新项目时,如何默认创建 SQL Server Express 数据库而不是 SQL Server Express LocalDB 数据库?

    我已经安装了 SQL Server Express,即使我在 VS2013 的 "Tools - Options - Data tools - Data connection - Instance name" 中将“(LocalDB)\v11.0”替换为“.\SQLEXPRESS”。但是他们对我不起作用。

  2. 假设现在我们必须使用 SQL Server Express LocalDB 作为 ASP.Net Identity 和我的数据库,我想知道是否有一种简单的方法来转换我的 LocalDB db 到 SQL Server Express 或 SQL Server db 当我完成开发并将我的应用程序部署到 IIS 时。

提前致谢。

首先在您的代码中指定连接字符串名称 DbContext class 如下所示:

public class MyDbContext : DbContext
{
    public MyDbContext(): base("name=connectionString")
    {
    }

    public DbSet<User> Users { get; set; }
    public DbSet<Order> Orders { get; set; }
}

然后在 Web.config 文件中指定连接字符串以指向您想要的 SQL 服务器版本:

  <connectionStrings>
    <add name="connectionString" connectionString="Password=password;Persist Security Info=True;User ID=sa;Initial Catalog=DatabaseName;Data Source=ServerName"
      providerName="System.Data.SqlClient" />
  </connectionStrings>

经过多次尝试,我自己找到了答案,在此分享。

  1. 只需将web.config中DefaultConnection的值修改“(LocalDB)\v11.0”为“.\SQLEXPRESS”,并为上下文登录授予足够的权限生成数据库之前的 id(如果是 NuGet PkgMgr 控制台中的更新数据库命令,或者 运行 你在 vs 中的网络应用程序)。

  2. 您可以将 LocalDB 文件附加到 SQL Server Express 实例。

希望对大家有所帮助。