2012-12-21 33 views
0


我是實體框架的新手,但試圖讓我的手進入它。在通過許多博客之後,我開始着手在我的項目中實施它,但我遇到以下問題。實體框架2012中的LINQ表達式中沒有顯示類型信息

我有VS 2012和工作的4.0版本的項目。
我在我的項目,創建4個文件 DataModel.Context.tt , DataModel.Designer.cs , DataModel.edmx.diagram , DataModel.tt

看起來不錯,直到此時加入DataModel.edmx文件。但是當我嘗試訪問我的Linq查詢中的表信息時。智能感知不顯示任何東西。

var context = new DataModelEntities(); 
var invoice = from c in context.Invoice select c.{//NOTHING SHOWING HERE}; 

DataModelEntities類(DataModel.Context.cs)看起來像

namespace MySpace.Objects.DataModel 
{ 
    using System; 
    using System.Data.Entity; 
    using System.Data.Entity.Infrastructure; 

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

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

     public DbSet<Invoice> Invoice { get; set; } 
     public DbSet<InvoiceContracts> InvoiceContracts { get; set; } 
    } 
} 

發票類的樣子:

//----------- 
// <auto-generated> 
// This code was generated from a template. 
// 
// Manual changes to this file may cause unexpected behavior in your application. 
// Manual changes to this file will be overwritten if the code is regenerated. 
// </auto-generated> 
//-------- 
namespace MySpace.Objects.DataModel 
{ 
    using System; 
    using System.Collections.Generic; 

    public partial class Invoice 
    { 
    public int ID { get; set; } 
    public int POID { get; set; } 
    } 
} 

請讓我知道如果我錯過什麼。

謝謝...

+0

你能告訴我們發票類的代碼嗎? –

+0

當然......這只是一個POCO生成的,它位於DataModel.tt中 // ----------- // <自動生成的> //此代碼是從模板。 // //手動更改此文件可能會導致應用程序出現意外的行爲。 //如果重新生成代碼,手動更改此文件將被覆蓋。 // // -------- namespace MySpace.Objects.DataModel { using System; 使用System.Collections。通用; public partial class發票 { public int ID {get;組; } public int POID {get;組; } } } } – Krishna

+0

請確保你有'使用System.Linq;'行 – Andrei

回答

0

重命名

public DbSet<Invoice> Invoice { get; set; } 

public DbSet<Invoice> Invoices { get; set; } 

然後嘗試

var invoice = c in context.Invoices.Select(c=>c.HERE) 
+0

沒有運氣..現在代碼看起來像 var context = new DataModelEntities(); var invoice = from c in context。發票選擇c。{// NOTHING SHOWING HERE}; – Krishna

+0

var invoice = from c in context.Invoice.select(c => c.xxx) –

+0

im不知道查詢語法如何處理沒有where子句。 Lambda版本應該允許.select沒有.where –

0

這只是一個查詢規範(的IQueryable<Invoice>型):

var invoiceQuery = from c in context.Invoice select c; 

invoiceQueryinvoice這裏一個更好的名字。)它不是一個執行查詢的結果,並沒有查詢被髮送到數據庫中的這一點。要獲得查詢結果,你必須應用導致查詢執行,例如ToList()FirstOrDefault()操作人員等:

var invoices = invoiceQuery.ToList(); 

這是List<Invoice>類型。

相關問題