2014-01-07 102 views
1

我首先使用EF 6代碼。 我已經改變了我的DbContext通過connction字符串構造器EF CodeFirst遷移不起作用

public class EFDbContext : DbContext 
{ 
    public EFDbContext(string connectionString) 
     : base(connectionString) 
    { 
     Database.Connection.ConnectionString = connectionString; 
    } 
    public EFDbContext() 
    { 
    } 

    public DbSet<MC_Users> MCUsers { get; set; } 
} 

和Web.Config中

移動連接字符串

一切工作正常。但是向MC_Users添加一個屬性, 不影響數據庫,我的意思是代碼先不起作用。

add-migration test command created a new DbMigration class test 
update-database command applied it successfully 

,但我的數據庫表沒有改變

請幫

回答

1

你正在改變本地SQLEXPRESS數據庫。您需要提供自定義的連接字符串更新數據庫的cmdlet:

更新,數據庫-ConnectionString

http://coding.abel.nu/2012/03/ef-migrations-command-reference/#Update-Database

您也可以使用DbMigrator類從代碼做遷移,而使用Update-Database cmdlet的。當您使用DbMigrator類時,您需要設置dbMigrator.Configuration.TargetDatabase以更改默認連接字符串。

var dbMigrator = new DbMigrator(new Configuration()); 
dbMigrator.Configuration.TargetDatabase = //New connection settings goes here. 
dbMigrator.Configuration.AutomaticMigrationDataLossAllowed = true; 
dbMigrator.Update(); 

http://msdn.microsoft.com/en-us/library/system.data.entity.migrations.dbmigrator(v=vs.113).aspx

+0

感謝您的幫助,但我從代碼給連接字符串。所以在應用程序配置或Web配置中沒有連接字符串名稱。那麼我怎麼能給更新數據庫-ConnectionString ConnectionString名稱 – pravprab

+0

爲了遷移到工作,你應該添加連接字符串到web.config。 – mostruash

+1

pravpab,如果您使用powershell cmdlet Update-Database,只有三種方法可以提供連接字符串:1.通過在配置文件中提供它,2.在DbContext類的默認構造函數中對其進行硬編碼。 3.使用ConnectionString參數將它傳遞給cmdlet。 –

1

爲了使您的遷移工作,你必須連接字符串添加到您的項目設置爲「啓動項目」中的web.config/app.config中。在設置這些之後,在包管理器控制檯上,您應該選擇DbContext項目並嘗試更新數據庫方法。

+0

我在軟件包管理器控制檯的「Default project」下拉列表中選擇了正確的項目,但這還不夠 - 將項目設置爲啓動項目的竅門。 – Aligma

1

留下一個答案這裏我有沒有被接受的答案解決了類似的問題:

我有密碼錯誤在我使用針對不同的環境下的app.config。 Get-Migrations不會爲您提供有關失敗憑據的錯誤,它只會告訴您「沒有將遷移應用於目標數據庫」,這非常具有誤導性。

希望有人遇到此問題會發現它就像連接字符串中的拼寫錯誤一樣簡單!

爲了誰刪除此國防部:

請不要發佈相同的答案多個問題。發佈一個很好的答案,然後投票/標記以重複關閉其他問題。如果問題不重複,請調整問題的答案。

這不是來自另一個問題的重複答案;這是另外一個答案。我在工作中遇到了這個問題,但接受的解決方案並不是我的答案。這只是另一個選擇讓別人檢查他們是否偶然發現了這個問題。