我的数据库在哪里,如何查看?

mpe*_*pen 12 entity-framework-5

我刚刚创建了一个全新的应用程序,通过NuGet添加了EntityFramework 5,创建了一个非常基本的DbContext并保存了一些数据.

我的数据究竟在哪里?如何查看?它未App.config加修改的是

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </configSections>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="v11.0" />
      </parameters>
    </defaultConnectionFactory>
  </entityFramework>
</configuration>
Run Code Online (Sandbox Code Playgroud)

通过检查db对象,我可以看到我的连接字符串是

Data Source=(localdb)\\v11.0;Initial Catalog=ImageSignature.ImageContext;Integrated Security=True;MultipleActiveResultSets=True;Application Name=EntityFrameworkMUE
Run Code Online (Sandbox Code Playgroud)

但所有这些对我来说都是胡言乱语.我来自MySQL背景.

我的数据库到底在哪里,我该如何查看?我在VS2012的"服务器资源管理器"中看不到任何相关内容.

Sha*_*aan 10

这个文章应该回答你的问题.

配置部分允许您指定Code First应该用于定位要用于上下文的数据库的默认连接工厂.仅当没有将连接字符串添加到上下文的配置文件时,才使用默认连接工厂.

安装EF NuGet软件包时,会注册一个指向SQL Express或LocalDb的默认连接工厂,具体取决于您安装的是哪一个.

根据您的配置判断,您似乎正在使用与LocalDb的连接,LocalDb 是用于开发的SQL的极简版本.

您可以尝试使用Visual Studio中的内置服务器资源管理器来访问该数据库,但是,正如您所写,它可能不会"开箱即用".因此,您可能需要在服务器资源管理器中创建新连接以查看内容.

编辑:

我不得不用VS2012启动VMware Windows 8来实际回答"驱动器在数据库中的位置"的问题.

LocalDb创建mdfldf在文件中C:\Users\<USER NAME>\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances\v11.0

我的VM的屏幕截图

至于通过服务器浏览器连接它,我能够通过输入(LocalDb)\v11.0服务器地址然后从应用程序(带命名空间)中选择名称类似于数据上下文名称的数据库来查看数据库.

我在这里找到的所有这些信息.

请注意,在你的代码贴在这里好像你正在使用的应用程序的启动重建数据库Database.SetInitializer(new DropCreateDatabaseAlways<ImageContext>());.当然,这在第一次运行应用程序时很好(因此数据库实际上已经创建),但随后的重新运行将清除数据并以新的平板开始.在使用Server Explorer连接到数据库之后,我实际上无法执行此代码,因为"数据库已在使用中".您可能需要重新考虑在服务器浏览器中保持连接打开或更改该行代码.