2014-05-14 126 views
0

我真的沒有每次EF的運氣。這一次,它看起來是這樣的:實體框架沒有創建表格

我第一次創造了一個方面,我有如下錯誤:

Invalid object name 'dbo.TableName1'

這個數據庫初始化器設置爲CreateDatabaseIfNotExists t將其做的伎倆後。

接下來我創建了一個不同的上下文,它在開發的某個時候發生了變化。所以這次我不斷收到此錯誤:

The model backing the 'NewContext' context has changed since the database was created.

我找到了解決設置數據庫初始化程序爲空,但在這之後我不斷收到的第一個錯誤:

Invalid object name 'dbo.TableName2'

我也試着設置在初始化到DropCreateDatabaseIfModelChanges和DropCreateDatabaseAlways,並且這些設置拋出異常:

Cannot drop database "DatbaseName" because it is currently in use

我想我已經嘗試過一切,我在網上找到(有沒有很多這類話題),但沒有人幫助我。

刪除數據庫並沒有幫助,也沒有從本地文件數據庫更改爲SQL Server 2014 Exspress。拋出同樣的異常。有任何想法嗎?

EDIT1: 工作方面:

public class ProfilesContext : DbContext 
{ 
    public ProfilesContext() : base("DefaultConnection") 
    { 
    } 

    public DbSet<Profile> Profiles { get; set; } 
    public DbSet<PrevilegedContact> PrevilegedContacts { get; set; } 
} 

失敗情境:

public class PlacesContext : DbContext 
{ 
    public PlacesContext() 
     : base("DefaultConnection") 
    { 

    } 

    public DbSet<Place> Places { get; set; } 

    public DbSet<Price> Prices { get; set; } 
    public DbSet<Photo> Photos { get; set; } 
    public DbSet<Comment> Comments { get; set; } 
} 
+0

你可以顯示你的初始化代碼,你的DbContext類嗎? – James

+0

用您請求的代碼編輯主題 –

回答

1

對於你在做什麼,看來你有你的初始化2個選項。有Migrations,有DropCreateDatabaseIfModelChanges

當模型更改並允許您保留數據時,遷移將控制更新數據庫表。您可以對其進行配置以允許數據丟失。如果您已經有測試數據,那麼在開發期間非常有用。

每次進行模型更改時,DropCreateDatabaseIfModelChanges將簡單地刪除數據庫,並使用新模式重新創建數據庫。

你所得到的錯誤消息

Cannot drop database "DatbaseName" because it is currently in use

因爲你很可能瀏覽的表在服務器資源管理器中越來越具有開放連接到數據庫。您可以使用服務器資源管理器中的右鍵單擊上下文菜單關閉連接。

如果您想要遷移的視頻概述,有一個免費的視頻by Scott Allen & Pluralsight。這是MVC4,但實體框架部分確實覆蓋了Initalizers。如果你想爲MVC5更新一個包含多個上下文等,它確實存在,但你需要使用Pluralsight免費試用版來訪問它。

0

我同意詹姆斯。關於檢查服務器瀏覽器的好處。右鍵單擊數據庫,然後選擇「關閉連接」或至少檢查是否有紅色的X指示連接已關閉。下面的鏈接是關於Code First Migrations基礎知識的很好的教程。該鏈接直接指向教程中的頁面,講述如何進行模型更改以及如何讓EF再次開心! http://www.asp.net/mvc/tutorials/mvc-5/introduction/adding-a-new-field。我更喜歡使用遷移。您可以使用軟件包管理器控制檯和1)啓用遷移,2)添加遷移,3)更新數據庫。如果在開發中,儘可能使用LocalDb,並使用Configuration類中的Seed方法預填充數據庫。