2013-06-24 93 views
1

我以前在我的數據庫中創建了幾桌,我想要映射到幾個模型類:自定義表名ASP MVC 4

"SISTEMA.Voyages" => public class Voyage 
"SISTEMA.Puerto" => public class Port 

據我所知,在ASP.MVC 4實體框架,這樣可以可以通過兩種方式來完成。但是,對於他們兩個,我都會收到我不知道如何解決的錯誤。

率先在Voyage.cs:

[Table("SISTEMA.Voyages")] 
public class Voyage 

或第二的Context.cs:

public class ApplicationEntities : DbContext 
{ 
    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
    modelBuilder.Entity<Voyage>().ToTable("SISTEMA.Voyages"); 
    } 
} 

對於第一個版本時,我以前以爲這是自動的東西我得到這個錯誤:

The type or namespace name 'Table' could not be found (are you using directive or an assembly reference?) 
The type or namespace name 'TableAttribute' could not be found (are you using directive or an assembly reference?) 

第二次我得到這個錯誤,我沒有想到,因爲我認爲這個是一個配置問題,讓我非常困惑:

The model backing the 'ApplicationEntities' context has changed since the database was created. Consider using Code First Migrations to update the Database. 

這個歷史甚至記錄在哪裏?

爲了記錄在案,我用來處理這種在Rails的問題通過鍵入:

class Voyage 
    self.table_name = "SISTEMA.Voyages" 
end 

而且我不是很熟悉C#/ ASP.NET。只要發佈我正在尋找的下一個小時,除非有人告訴我我先出錯的地方。

+1

對於第一個版本,您是否添加了using指令? (使用System.ComponentModel.DataAnnotations) – Jack

+0

我剛剛做到了。謝謝。而現在我得到了第二種情況發生的錯誤。 :(目前正在研究Migrations,但我仍然感到困惑...... – ovatsug25

+0

閱讀後更接近解決方案:http://stackoverflow.com/questions/3600175/the-model-backing-the-database-context-has-因爲數據庫是crea基本上我在'Global.asax'中添加'使用System.Data.Entity';並且還添加了'Database.SetInitilaizer (null);' – ovatsug25

回答

1

對於第一種方式,你缺少一個using指令表屬性,添加到您的類:

using System.ComponentModel.DataAnnotations; 

對於第二種方式,我猜的東西在你的模型已發生變化,現在它建議使用Code First來更新數據庫。當你運行你的應用程序,它首先碰到數據庫時,它會驗證你的模型是否與模式匹配 - 如果沒有,它會給你這個錯誤。

我建議檢查出一些這些鏈接的幫助入門EF /代碼優先/遷移 - 他們是非常方便的

EF + Code First
Handling Many to Many with Payload
How to work with Migrations
MSDN EF Site

0

請添加:

using System.ComponentModel.DataAnnotations.Schema;