2017-01-15 142 views
1

錯誤消息數據訪問MVC是:錯誤使用實體框架

無效的列名「僱員」 無效的列名「僱員」 無效列名稱「城市」。

{ 
    EmployeeContext employeeContext = new EmployeeContext(); 
    Employee employee = employeeContext.Employees.Single(emp => emp.EmployeeId == id); //This line is causing the error 
} 

但我得到完全相同的數據庫表中的所有匹配的列,爲什麼說我有無效列?我哪裏做錯了?我使用codeFirst方法,實際上表中有四列是EmployeeID,Name,Gender,City,我如何在名稱和性別中沒有錯誤,但是在EmployeeID和City中只有錯誤?並且EmployeeID中的錯誤出現兩次?

詳細代碼

Employee類:

namespace MVCDemo.Models 
{ 
    public class Employee 
    { 
     public int EmployeeId { get; set; } 
     public string Name { get; set; } 
     public string Gender { get; set; } 
     public string City { get; set; } 
    } 
} 

EmployeeContext:

namespace MVCDemo.Models 
{ 
    [Table("tblEmployee")] 
    public class EmployeeContext : DbContext 
    { 
     public DbSet<Employee> Employees { get; set; } 
    } 
} 

數據庫表: enter image description here

+0

你認爲你連接了哪個數據庫?你在使用DatabaseFirst還是CodeFirst方法? – MadOX

+0

顯示您的EmployeeContext和Employee模型代碼。 – abdul

+0

@abdul將它添加到我的文章已經 – grooveline

回答

2

你爲什麼用[Table(「tblEmployee」)]裝飾EmployeeContext?如果你用Employee類來做,那對嗎?

[Table("tblEmployee")] 
public class Employee 
{ 
    public int EmployeeId { get; set; } 
    public string Name { get; set; } 
    public string Gender { get; set; } 
    public string City { get; set; } 
} 
+0

哎喲,我的錯,問題解決了,非常感謝 – grooveline

0

什麼,我認爲是:

EmployeeContext employeeContext = new EmployeeContext(); 

該行鍼對本地數據庫服務器創建上下文。請確保你給正確的連接字符串作爲參數:

EmployeeContext employeeContext = new EmployeeContext(connection-string); 

連接字符串應該取決於你工作項目的web.config或app.config中採取

+0

我想我得到了正確的本地databse服務器在web.config中,如果我更改databasename我得到了另一個不同的錯誤,如無效對象的東西,但現在我得到無效的列 – grooveline

+0

是dbFirst或codeFirst方法? – MadOX

+0

這是代碼第一的方法。實際上,表中有四列是EmployeeID,Name,Gender,City,我如何在名稱和性別中沒有錯誤,但在EmployeeID和City中只有錯誤? – grooveline

0

您提供的細節不足以理解你的問題。首先確保您已正確連接到數據庫。其次,如果City是您實體類中的導航屬性,那麼您可能缺少「Include」方法。