【问题标题】:EF Code first cannot locate databaseEF 代码首先找不到数据库
【发布时间】:2016-01-18 06:15:29
【问题描述】:

我创建了一个服务,它正在获取一些数据并存储到数据库中。 在获取数据或存储数据时,我可以看到数据正在正确存储,但我无法在任何地方看到数据库。

我的连接字符串和上下文如下

public class Context: DbContext 
{
    public DBContext() : base("name=DBConnectionString") 
    {
        public DbSet<IEmployee> Employees {get; set;}
    }
}


 <connectionStrings>
    <add name="DBConnectionString" 
    connectionString="Data Source=(localdb)\v11.0;Initial Catalog=SLDB;Integrated Security=true" 
    providerName="System.Data.SqlClient"/>
 </connectionStrings>

数据库没有出现在 SQL Server 对象资源管理器中,我也无法在物理文件系统上找到它。

我已经查看了物理/mdf 文件的以下位置

  • c:\user\HaseebAsif
  • %AppData%(漫游/本地)\Microsoft....
  • c:\Program Files\Microsoft\Microsoft sql server ....

当我使用 '(localdb)/v11.0' 连接到服务器时,它只显示系统数据库,而不是我的,SLDB。

知道如何在 SSMS 或 Windows 资源管理器中查看数据库

【问题讨论】:

  • 尝试删除name=
  • 目前我安装了三个不同的 SQL 实例(2012,2014),我希望我的数据库在 v11 中,所以我指定了连接字符串。

标签: c# sql-server entity-framework


【解决方案1】:

AttachDbFilename=c:\path\todb\SLDB.mdf 添加到包含 EF 上下文/模型等的项目和应用程序本身的连接字符串中。

您还可以在连接字符串中使用应用程序域属性,例如|TheVariable|

然后在您的Configuration.cs EF 类模块构造函数中:

public Configuration()
{
    AppDomain.CurrentDomain.SetData("TheVariable", @"c:\path\todb"); //or something dynamic...
}

在你的应用程序启动时做同样的事情,然后你就可以这样做了:

AttachDbFilename=|TheVariable|\SLDB.mdf

再次执行Update-database,MDF 文件将位于连接字符串中指定的路径。

如果此时数据库没有出现在 SQL Management Studio 中,请手动右键单击 Database 节点和 Attach MDF。

【讨论】:

    猜你喜欢
    • 2018-09-18
    • 2012-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多