2011-04-12 126 views
8

我正在通過Building an MVC 3 App with Code First and Entity Framework 4.1教程MSDN和就死在「默認此外,這個數據庫將是一個SQL Express數據庫從強類型得出的名字上下文的名稱及其文件將位於SQL Express默認數據文件夾中。「更改EF 4.1代碼第一次默認DB位置

如果我想更改默認值(例如,將MDF文件放在我的App_Data文件夾中),我該怎麼做?我將有幾個不同的上下文(每個主要功能區域一個),並希望他們都住在同一個數據庫中。

回答

10

您可以使用web.config文件連接設置來定義數據庫所在的位置。 你必須讓上下文名稱=連接字符串名稱,因此,如果你上下文是MyContext你可以定義如下位置:

<connectionStrings> 
    <clear/> 
     <add name="MyContext" 
     connectionString="Server=myServer;Database=MyDB;Uid=foo;Password=XXX; " 
     providerName="System.Data.SqlClient" 
      /> 


    </connectionStrings> 
+0

如果我想讓所有的上下文都在同一個物理數據庫中,我只需要提供多個具有相應的'name'元素和相同的'connectionString'元素的條目? – 2011-04-12 04:29:24

+0

我從來沒有嘗試過,但是這聽起來像應該工作,你只需要承擔你的數據庫初始化,它不會試圖刪除並創建每個上下文的數據庫?即您可能必須使用CreateDatabaseIfNotExists而不是DropCreateDatabaseIfModelChanges或DropCreateDatabaseAlways – Daveo 2011-04-12 05:23:09

0

在回答你的第二個問題...

「我會有幾個不同的背景(每個主要功能區域都有一個),並希望他們都住在同一個數據庫中。」

爲什麼不試試...

MyContext.cs

public partial class MyContext : DbContext 
{ 
} 

FooContext.cs

partial class MyContext 
{ 
    public DbSet<Foo> Foos { get; set; } 
} 

BarContext.cs

partial class MyContext 
{ 
    public DbSet<Bar> Bars { get; set; } 
} 

你結了一個環境和一個連接,但你的代碼被分割成多個文件。希望這就是你想要實現的。