12

我刚刚创建了一个全新的应用程序,通过 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>

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

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

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

我的数据库到底在哪里,我如何查看它?我在 VS2012 的“服务器资源管理器”下看不到任何相关内容。

4

3 回答 3

10

这篇文章应该回答你的问题。

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

当您安装 EF NuGet 包时,会注册一个默认连接工厂,该连接工厂指向SQL Express 或 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

我的虚拟机截图

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

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

请注意,在您在此处发布的代码中,您似乎是在应用程序开始时使用Database.SetInitializer(new DropCreateDatabaseAlways<ImageContext>());. 当然,这在第一次运行应用程序时很好(因此实际上创建了数据库),但随后的重新运行将清除数据并从新开始。在我使用服务器资源管理器连接到数据库后,我实际上无法执行此代码,因为“数据库已在使用中”。您可能需要重新考虑保持在服务器浏览器中打开的连接或更改该行代码。

于 2013-05-23T06:43:51.670 回答
3

您正在使用LocalDb. 内容可以存储在文件中。您可以使用连接字符串指定位置:

<connectionStrings>
    <add name="ImageContext" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=database;Integrated Security=SSPI;AttachDBFilename=c:\work\database.mdf" providerName="System.Data.SqlClient" />
</connectionStrings>

连接字符串的name必须与您的DbContext文件名匹配。

您可以使用 Visual Studio 中的服务器资源管理器打开此 db 文件并浏览其内容。

于 2013-05-23T06:44:25.553 回答
1

在我的情况下,足以连接到 SQL EXPRESS -> 属性 -> 文件并检查数据库文件表中的路径列。在此处输入图像描述

于 2019-08-23T12:07:49.347 回答