2013-02-28 139 views
1

我沒有可見的領域,你知道爲什麼(在我的LINQ)?實體框架 - 選擇數據

var student = (from s in ctx.Students 
       where s.StudentName == "Student1" 
       select s).FirstOrDefault<Student>(); 

數據庫(表領土):

enter image description here

LINQ

enter image description here

LINQ與CTX也有問題

enter image description here

的TerritoryID

enter image description here

正確:

public ActionResult Index() 
     { 

      using (var ctx = new NORTHWNDEntities()) 
      { 

       var Territory = (from s in ctx.Territories 
           where s.TerritoryDescription 
             == "Student1" 
           select s).FirstOrDefault<Territories>(); 
      } 

      return View(); 
     } 

感謝所有爲您的時間!和幫助。

+0

你的意思是你的代碼正在編譯,但你不能在設計中看到'Territory'?你嘗試刷新edmx,或刪除它並創建一個新的? – Habib 2013-02-28 12:13:24

+1

不應該從'在ctx.Territories'中? – MarcinJuraszek 2013-02-28 12:14:08

+0

你是否在視圖中返回任何東西? – 2013-02-28 12:31:37

回答

2

ctx是不是當你創建一個環境圖奇蹟般地出現。要使用你的背景,你必須將它實例,像這樣:

using(var ctx = new MyContext()) 
{ 
    var territory = .... 
} 

其中MyContext應該由你的上下文類的名稱所取代。

+0

我必須添加,因爲MyContext()或MyEntity()不可見。 – 2013-02-28 12:55:01

+0

嗯,我不知道你的上下文類的名字。看到我的補充。 – 2013-02-28 12:55:52

+0

public partial class NORTHWNDEntities:ObjectContext {} < - 我瞭解NORTHWNDEntities我必須把 – 2013-02-28 12:57:17

2

檢查課程以查看該屬性是否標記爲私人。

+0

訪問權限對此表是公開的。 – 2013-02-28 12:18:54

+0

我指的是TerritoryID本身,它可能被標記爲私有,表格是公開的。 – 2013-02-28 12:24:56

+0

我edtited我的帖子可以看看嗎? – 2013-02-28 12:30:59

3

它是否在您正在查詢的上下文中顯示ctx?
這個問題看起來像你沒有創建好你的數據上下文的實例(ctx),或者可能是那個上下文中不可見的變量(ctx)。

+0

你知道我使用VS 2010創建.edmx,現在我想從使用LINQ的Territoy獲取數據,但ctx不可見。 Resharper告訴我「創建局部變量ctx」我必須做什麼? – 2013-02-28 12:34:39

+1

您可以創建本地變量,或者也可以在控制器級作用域聲明一個私有變量,然後在控制器的構造器中初始化該變量。然後,變量將在您的所有操作中可見。 – 2013-02-28 13:46:52

2

建議立即進行刪除不:

(from s in Territories where s.TerritoryID == "Student1" select s).FirstOrDefault<Territories>(); 
+0

不,紅色在哪裏。 – 2013-02-28 12:50:08