2013-04-15 48 views
7

我使用EF創建模型並使用DbContext 5.X生成器生成其上下文。現在我重命名了我的一個實體的類名。現在,當我運行我的代碼時,我得到「實體類型Student2不是當前上下文模型的一部分。」錯誤。實體類型[名稱]不是當前上下文的模型的一部分

var context = new MyEntities(connectionString); 
foreach(var student in context.Students) 
{ 
    Console.WriteLine(class.Name.ToString()); 
} 

在我的數據上下文中。

public partial class MyEntities : DbContext 
{ 
    public MyEntities() 
     : base("name=MyEntities") 
    { 
    } 

    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     throw new UnintentionalCodeFirstException(); 
    } 

    // public DbSet<Student> Students { get; set; } -> Origional 
    public DbSet<Student2> Student { get; set; } // I renamed Student to Student2 
} 

如何解決這一問題?由於一些衝突,我需要重新命名我的班級。

+0

'WELL2'從哪裏來? 'Student2'的結構是什麼? –

+0

正如你明顯解決了你的問題,你介意回答你自己的問題,告訴你如何去啓發社區? –

+0

@GertArnold WELL2輸入錯誤。我已經爲這個問題添加了答案。 http://stackoverflow.com/a/16029086/1077385 –

回答

1

使用Add-Migration

這是樣板:

Add-Migration "Muster" -ConnectionString "Data Source=.;" -ConnectionProviderName System.Data.SqlClient 

和更新數據庫,就像這樣:

Update-Database -ConnectionString "Data Source=.;" -ConnectionProviderName System.Data.SqlClient 

Visual Studio你可以使用Package Manager Console它。作爲默認的項目,你應該選擇你的項目 - 如果你有很多項目。

+0

對不起,我沒有得到你想說的。 –

+1

@FaisalHafeez - 我已經更新了我的答案。你現在清楚嗎? – MikroDel

+0

仍然無法得到它。 –

0

那麼這裏是解決方案。打開Model.edmx文件的UI,並在那裏編輯學生實體名稱給Student2。這將生成新的文件和上下文,學生將被Student2替換。

+0

你讓我運行一些命令(這​​對我沒用)。我做了什麼編輯實體名稱。我所做的錯誤是我改變了生成文件的類名,但沒有告訴模型使用新類,所以無法找到新類。 –

0

許多教程要求創建所有這些不需要的額外類。基本上所有你需要做的,使實體框架的工作是創建模型,然後在你的控制器中創建對象。

實例型號:myEntity.edmx 示例控制器:

public class HomeController : Controller 
    { 
     myEntity db = new myEntity(); 

     public ActionResult Index() 
     { 
      return View(db.myTable.ToList()); 
     } 
} 

其他的都是在實體模型,所以當錯誤寫着:「myEntityContext」不是模型的一部分」,因爲我是真的正在創建一個名爲「myEntityContext」的每個教程的額外類

當你嘗試創建一個強大的視圖時,你創建的上下文會炸掉,因爲它試圖關聯一個不存在的類因此通過刪除所有額外的DAL和模型上下文,使用Entity創建一個新的視圖。在強視圖菜單中顯示的上下文應該可以正常工作。

我有同樣的問題和posted我做了什麼來解決它

12

我有同樣的問題時,我曾在連接字符串錯誤的元數據。嘗試在app.config中重新創建連接字符串。

相關問題