2012-12-06 48 views
0

我有一個奇怪的問題,代碼第一:代碼首先做怪遷移時我的接口添加到我的實體

在項目我的實體看起來像和代碼首先在做遷移的罰款。

public class MyEntity 
{ 
    public Guid Id { get; set; } 
    public string Name { get; set; } 
} 

我決定將接口添加到我的項目像這樣的

public interface IEntity 
{ 
    Guid Id { get; set; } 
    bool IsDeleted { get; set; } 
} 

我的新類現在看起來像這樣:現在

public class MyEntity : IEntity 
{ 
    public Guid Id { get; set; } 
    public string Name { get; set; } 
    bool IsDeleted { get; set; } 
} 

,如果我嘗試使用代碼遷移首先,不是在這裏添加列,而是先做代碼:

  • DropForeignKey
  • DropIndex
  • 試圖CREATETABLE myEntity所表和休息,告訴我這個表已經存在

任何想法,爲什麼代碼第一次嘗試這樣做呢?

回答

0

使用EF5我無法得到它的repro。通常在遷移時,執行命令的順序非常重要,因爲數據庫和模型之間的元數據是一致的。

這些操作的正確順序將兩種:

填充數據庫(即運行的應用程序),然後添加遷移和更新數據庫之前

一)允許運行的遷移,添加遷移然後更新數據庫b)運行應用程序Enable-Migrations,更改模型,添加遷移,更新數據庫,再次確保在每次更改模型後運行更新數據庫

也注意我正在使用一個非常簡單的DbContext,看起來像這樣:

public class EntityContext : DbContext 
{ 
    public DbSet<MyEntity> MyEntities { get; set; } 
} 
相關問題