我刚创建了一个全新的应用程序,通过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的“服务器资源管理器”中看不到任何相关内容。
答案 0 :(得分:9)
This文章应该回答你的问题。
配置部分允许您指定默认连接 Code First应该使用的工厂来定位要用于的数据库 上下文。默认连接工厂仅在不使用时使用 连接字符串已添加到配置文件中 上下文。
当您安装EF NuGet包时,默认连接工厂 已注册,指向 SQL Express或LocalDb ,具体取决于 你安装了哪一个。
根据您的配置判断,您似乎正在使用与LocalDb的连接which is a minimalist version of SQL used for development。
您可以尝试使用Visual Studio中的内置服务器资源管理器来访问该数据库,但是,正如您所写,它可能不会“开箱即用”。因此,您可能需要在服务器资源管理器中创建新连接以查看内容。
编辑:
我不得不用VS2012启动VMware Windows 8来实际回答“驱动器在数据库中的位置”的问题。
LocalDb
在mdf
ldf
和C:\Users\<USER NAME>\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances\v11.0
个文件
至于通过服务器浏览器连接到它,我能够通过输入(LocalDb)\v11.0
作为服务器地址,然后从应用程序中选择名称类似于数据上下文名称的数据库来查看数据库(带有命名空间) )。
我发现所有这些信息here。
请注意,在您发布的代码here中,您似乎正在使用Database.SetInitializer(new DropCreateDatabaseAlways<ImageContext>());
在应用程序开始时重建数据库。当然,这在第一次运行应用程序时很好(因此数据库实际上已经创建),但随后的重新运行将清除数据并以新的平板开始。在使用Server Explorer连接到数据库之后,我实际上无法执行此代码,因为“数据库已在使用中”。您可能需要重新考虑在服务器浏览器中保持连接打开或更改该行代码。
答案 1 :(得分: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中的Server Explorer打开此db文件并浏览其内容。
答案 2 :(得分:1)