2013-10-14 113 views
0

我是ASP.NET MVC 4中的新成員。在我的項目中,我使用代碼優先 EF中的技術。我想從數據庫中獲取一些數據,我用下面的代碼是:ASP.NET MVC 4延遲查詢執行不檢索數據庫中的數據

List<SelectListItem> ls = new List<SelectListItem>(); 
    var lm = from m in db.BOs //fetch data from database 
      select m; 
    foreach (var temp in lm) 
    { 
     ls.Add(new SelectListItem() { Text = temp.Name, Value = temp.Id.ToString() }); 
    } 

但是,當執行指針移動內部foreach立刻回來了顯示return lsCount = 0循環。代碼在運行時不會給我任何錯誤,這就是爲什麼我沒有得到錯誤的地方。

更新:我發現了一些新的這個問題。當我將鼠標指針放在var lm上時;它顯示我查詢並在查詢表名FROM子句是不是在我的SQL數據庫中。我的SQL表名是BO,查詢時它是BOes。我不知道這個名字來自哪裏。所以我如何克服這個?

+0

檢查EF映射,看看錶映射到你的實體不中。 – Spock

回答

0

寫下面的DbContext類內代碼:

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); 
    } 

在OnModelCreating方法的modelBuilder.Conventions.Remove聲明防止表名被使用複數。如果您沒有這樣做,則生成的表格將被命名爲學生,課程和註冊。相反,表名將是學生,課程和註冊。開發人員不同意表名是否應該複數化。本教程使用單數形式,但重要的一點是,您可以通過包含或省略此行代碼來選擇您喜歡的任何形式。

1

裝飾你BOTable("BO")指定表名(屬性是System.ComponentModel.DataAnnotations.Schema命名空間)

[Table("BO")] 
public partial class BO 
{ 
    ...