2012-03-19 55 views
3

首先使用代碼創建一個網站,對於我自己的想法,我希望能夠探索它創建的數據庫,就像在VS2010中首次使用數據庫並創建SQL Server數據庫時一樣。實體框架4代碼優先:我的數據庫在哪裏?

我已經看了一下,我能找到的唯一相關信息似乎是先使用先前存在的數據庫與代碼第一,我想數據庫由代碼第一,我只是想知道它在哪裏,或者如何改變它的默認位置,以便我可以查看它。

我有配置文件中的連接字符串的小提琴,但不知道我在做什麼,所以沒有任何成功。它與custon連接字符串很好地工作,但我仍然不知道數據庫文件在哪裏!

+0

喜奔,考慮粘貼在你的連接字符串,所以我們可以告訴你,基於這一點。此外,請注意,如果配置不存在,實體框架代碼優先使用約定 - 它具有創建數據庫的位置以及調用它的默認方案,以代替連接字符串中的顯式指令。另外,我假設您知道如何使用Sql Server Management Studio「查看」數據庫,如atbyrd的答案所示。 – kingdango 2012-09-12 12:49:22

回答

0

Scott Gu wrote a good article代碼優先。如果您想直接查看有關連接字符串的部分,可以搜索連接,然後生成將解釋生成過程。

0

如果您正在使用SQL Server或SQL Server Express如果您使用的是緊湊型版本,那麼應該有解決方案中的下一個的App_Data文件,你需要 Sql Server Management Studio

。您應該能夠通過查看您的Web.config文件來確定這一點。

0

假設您像YourContext一樣創建POCO類:DbContext 1.如果您定義了連接字符串name = YourContext而不是連接到特定數據庫。 2.在其他情況下,您的數據庫將在本地SQLEXPRESS實例上創建,名稱爲YOUR_NAMESPACE.YourContext

7

EF Code First具有多種方法來定義數據庫在哪裏以及如何創建。實際上它有一些Conventions(代替特定的配置或代碼)。我寧願要具體(見下面我的連接字符串例子),但如果你使用的約定,它是由微軟定義如下:

下面是從該網頁的代碼段:

連接字符串公約

實體框架使用默認約定創建本地主機上\ SQLEXPRESS實例或服務器的LocalDB的數據庫 和DER的完全限定類型名稱後 名稱數據庫獲取 上下文(例如,CodeFirstModel.SchoolEntities)。

Visual Studio 11包含LocalDb數據庫服務器而不是 SQLEXPRESS。在安裝期間,EntityFramework NuGet包 會檢查哪個數據庫服務器可用。然後,NuGet軟件包將通過設置默認數據庫服務器 來更新配置文件,該軟件是Code First按照慣例創建連接時使用的。如果 SQLEXPRESS正在運行,它將被使用。如果SQLEXPRESS不可用 則LocalDb將被註冊爲默認值。如果 已經包含默認連接工廠的設置 ,則不會對配置文件進行更改 。如果連接字符串設置爲 代碼,則在代碼中設置的實例將優先於在配置文件中找到的任何內容 。

當應用程序在後續時間運行時,除非模型 發生更改,否則將使用現有數據庫。如果模型更改並且您沒有設置初始值設定項,則會得到以下異常:「自從創建數據庫 以來,支持」ContextName「上下文的 型號已更改。考慮使用的Code First遷移來更新數據庫。」

一種方式來覆蓋數據庫名稱代碼優先約定 添加包含連接字符串 具有相同名稱的一個app.config或Web.config文件作爲你的上下文類型。應該將.config文件 添加到包含可執行程序集的項目中。

注意:使用Code First時,連接字符串應該是 常規數據庫連接字符串。在使用實體 Framework Designer時,連接字符串應該是 EntityConnection字符串。

下面是我的EF代碼優先的連接字符串的一個示例:在應用程序中定義

<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" /> 

最後一兩件事要記住......連接字符串(和一般的配置)上下文。換句話說,如果你的Data Access類(基於DbContext)在另一個項目中,連接字符串仍然需要在web.config(在web項目中)中定義。

祝你好運奔!

7
C:\Users\YourCurrentUserName 

我在上面的目錄中找到它。
通過對Context類名進行Windows搜索。

0

喜@kingDango這會給連接字符串和服務器名稱..

Console.WriteLine(ac.Database.Connection.ConnectionString); 

使用SQL Server Management Studio中該服務器名稱,並在申請服務器粘貼並連接.. 你可以找到數據庫。 。

或第二情況下,它可以在程序App_Data