实体框架4代码优先:我的数据库在哪里?

Ben*_*Ben 3 code-first entity-framework-4 ef-code-first

首先使用代码创建一个网站,对于我自己的想法,我希望能够在您首先使用数据库并在VS2010中创建SQL服务器数据库时探索它创建的数据库.

我已经浏览了一下,我能找到的唯一相关信息似乎是先使用以前存在的db代码,我希望db首先由代码生成,我只是想知道它在哪里,或者如何更改它的默认位置,以便我可以查看它.

我在配置文件中有一个连接字符串的小提琴,但不知道我在做什么,所以没有在那里取得任何成功.它与custon连接字符串工作正常,但我仍然不知道db文件在哪里!

SAm*_*SAm 8

C:\Users\YourCurrentUserName  
Run Code Online (Sandbox Code Playgroud)

我在上面的目录中找到了它.
通过对Context类名进行Windows搜索.


kin*_*ngo 7

EF Code First有多种方法可以定义数据库的创建位置和方式.实际上它有许多约定(代替特定的配置或代码).我更喜欢具体(请参阅下面的连接字符串示例),但如果使用约定,则由Microsoft定义,如下所示:

这是该页面的一个片段:

连接字符串约定

实体框架使用默认约定在localhost\SQLEXPRESS实例或LocalDB服务器上创建数据库,并 在派生上下文的完全限定类型名称之后命名数据库(例如,CodeFirstModel.SchoolEntities).

Visual Studio 11包括LocalDb数据库服务器而不是SQLEXPRESS.在安装过程中,EntityFramework NuGet包检查哪个数据库服务器可用.然后,NuGet包将通过设置Code First在按约定创建连接时使用的默认数据库服务器来更新配置文件.如果SQLEXPRESS正在运行,它将被使用.如果SQLEXPRESS不可用,则LocalDb将被注册为默认值.如果配置文件已包含默认连接工厂的设置,则不会对其进行任何更改.如果在代码中设置连接字符串,则代码中设置的实例将优先于配置文件中找到的任何内容.

当应用程序随后运行时,除非模型更改,否则将使用现有数据库.如果模型发生更改而您未设置初始化程序,则会出现异常:"自创建数据库以来,支持'ContextName'上下文的模型已更改.考虑使用Code First Migrations来更新数据库."

覆盖数据库名称的Code First约定的一种方法是添加App.config或Web.config文件,该文件包含与您的上下文类型同名的连接字符串.应将.config文件添加到包含可执行程序集的项目中.

注意:使用Code First时,连接字符串应该是常规数据库连接字符串.使用Entity Framework Designer时,连接字符串应为EntityConnection字符串.

下面是我的一个EF Code First连接字符串的示例:

<add name="NameOfYourDbContextClass" connectionString="Data Source=YOUR-DB-SERVER;Initial Catalog=THE-DB-NAME-YOU-WANT;Persist Security Info=True;Trusted_Connection=true;" providerName="System.Data.SqlClient" />
Run Code Online (Sandbox Code Playgroud)

最后要记住的一点是......连接字符串(以及一般的配置)由应用程序上下文定义.换句话说,如果您在另一个项目中拥有数据访问类(基于DbContext),则仍需要在web.config(在Web项目中)中定义连接字符串作为示例.

祝你好运!