2013-10-15 101 views
0

在EF4 winforms中,我有一個Datalayer,DomainClasses,UI和Test項目的解決方案。
測試項目使用與主項目不同的數據庫。爲測試數據庫啓用遷移

我有用UI的app.config中的連接字符串名稱設置主連接字符串。 我在測試項目的app.config中使用相同的連接字符串名稱設置了測試連接字符串。

我的背景被設置爲使用連接字符串名稱如下:

public class Context : DbContext 
{ 
    public Context() 
     : base("EFTest") // uses named connection string from app.config 
    { } 
    public DbSet<Person> People { get; set; } 
    // etc 
} 

我可以使在數據層項目遷移。但是,當我嘗試在測試項目中啓用項目時出現錯誤:

PM> enable-migrations -ProjectName Test 
No context type was found in the assembly 'Test'. 

我在想什麼?

回答

1

您只需在項目中啓用包含您的DbContext的遷移。如果測試項目不包含DbContext,則不需要啓用它以進行遷移。

詳細

您還沒有準確地指定,但它聽起來像是你只使用單個DbContext,並且它是在數據層項目。命令Enable-Migrations只是簡單地創建腳本結構,以便您自己指定遷移。遷移是單個命名類,它包含應該運行以升級到數據庫版本和從數據庫版本降級的命令集,無論您運行哪個數據庫(測試/ live/dev)。因此,您只需要爲數據層項目中運行Enable-Migrations,使用

> Enable-Migrations -ProjectName DataLayer 

存儲在DbContext的項目這些命令,並通過比較類生成,在性能你DbContext引用,如public DbSet<Person> People { get; set; }反對數據庫結構(以及諸如Fluent API代碼等其他內容)。你很可能會因此想通過比較測試(或者甚至一個發展)數據庫,而不是活動數據庫,爲此專門生成這些你做到:

> Add-Migration -ProjectName DataLayer -StartUpProjectName Test 

一旦你做到了這一點,你可以運行命令使用遷移明確你的生活或測試數據庫:

> Update-Database -ProjectName DataLayer -StartUpProjectName [Test|UI] 

與往常一樣,> get-help Enable-Migrations(或get-help對於任何遷移命令)列出了所有配置開關,他們爲你做什麼。