我如何强制 LocalDB 使用相同的数据库(跨项目和实体)?
How do I enforce LocalDB to use the same database (across projects&entities)?
我在正确配置 LocalDB 时遇到问题。这是设置:
- 项目 "DataAccess",包含启用了代码优先迁移的 EF6 DbContext。否 app.config,而是通过 StartUpProject 参数引用下面的项目。
项目 "Web",一个包含以下连接字符串的 MVC 应用程序:
<add name="devDatabase" connectionString="Data Source=(LocalDB)\MSSQLLocalDB;Integrated Security=True;AttachDbFilename=c:\Temp\devDB.mdf" providerName="System.Data.SqlClient"/>
在数据项目中调用Update-Database
时,会在MVC项目的App_Data目录下创建一个MDF文件DataAccess.DataContext.mdf
。这是第一个问题,因为这不是我对上述配置的期望。
第二个问题是,当实际启动MVC应用程序并访问数据库时,会创建另一组MDF文件。在我的例子中,这将导致另外两个文件:
DataAccess.DataContext`1[Entity1].mdf
DataAccess.DataContext`1[Entity2].mdf
所以现在我的数据分散在一堆文件中,这当然毫无用处。谁能指出我在这里缺少的正确方向?
好的,在将 SQL Express 和 运行 安装到基本相同的问题后,我找到了解决方案。我已将连接字符串名称添加到我的 DbContext 实现中,现在它正在运行:
public class DataContext : DbContext
{
public DbSet<Entity1> SomeEntities { get; set; }
public DataContext() : base("name=DatabaseConnectionString")
{
}
}
<connectionStrings>
<add name="DatabaseConnectionString"
connectionString="Data Source=(LocalDB)\MSSQLLocalDB;Initial Catalog=MBLux.CAP;Integrated Security=True;"
providerName="System.Data.SqlClient" />
</connectionStrings>
我在正确配置 LocalDB 时遇到问题。这是设置:
- 项目 "DataAccess",包含启用了代码优先迁移的 EF6 DbContext。否 app.config,而是通过 StartUpProject 参数引用下面的项目。
项目 "Web",一个包含以下连接字符串的 MVC 应用程序:
<add name="devDatabase" connectionString="Data Source=(LocalDB)\MSSQLLocalDB;Integrated Security=True;AttachDbFilename=c:\Temp\devDB.mdf" providerName="System.Data.SqlClient"/>
在数据项目中调用Update-Database
时,会在MVC项目的App_Data目录下创建一个MDF文件DataAccess.DataContext.mdf
。这是第一个问题,因为这不是我对上述配置的期望。
第二个问题是,当实际启动MVC应用程序并访问数据库时,会创建另一组MDF文件。在我的例子中,这将导致另外两个文件:
DataAccess.DataContext`1[Entity1].mdf
DataAccess.DataContext`1[Entity2].mdf
所以现在我的数据分散在一堆文件中,这当然毫无用处。谁能指出我在这里缺少的正确方向?
好的,在将 SQL Express 和 运行 安装到基本相同的问题后,我找到了解决方案。我已将连接字符串名称添加到我的 DbContext 实现中,现在它正在运行:
public class DataContext : DbContext
{
public DbSet<Entity1> SomeEntities { get; set; }
public DataContext() : base("name=DatabaseConnectionString")
{
}
}
<connectionStrings>
<add name="DatabaseConnectionString"
connectionString="Data Source=(LocalDB)\MSSQLLocalDB;Initial Catalog=MBLux.CAP;Integrated Security=True;"
providerName="System.Data.SqlClient" />
</connectionStrings>