2013-02-28 3 views
1

У меня нет видимой территории, вы знаете, почему (в моей LINQ)?Entity Framework - выберите данные

Пример

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

Correct:

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

+1

Не должно быть 'from s в ctx.Territories'? – MarcinJuraszek

+0

Вы вообще ничего не возвращаете? –

ответ

2

ctx не то, что волшебным образом появляется при создании контекста диаграммы. Чтобы использовать контекст вы должны создать его экземпляр следующим образом:

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

где MyContext следует заменить на имя вашего контекста класса.

+0

что я должен добавить, потому что MyContext() или MyEntity() не отображается. –

+0

Ну, я не знаю названия вашего контекстного класса. См. Мое дополнение. –

+0

открытый частичный класс NORTHWNDEntities: ObjectContext {} <- Я понимаю, что NORTHWNDEntities я должен положить –

2

Проверьте класс, чтобы увидеть, указано ли свойство как личное.

+0

доступ открыт для этой таблицы. –

+0

Я ссылался на сам TerritoryID, его можно было бы обозначить как private, а Table - публичным. –

+0

Я редактировал свой пост, вы можете посмотреть его? –

3

Видно ли ctx в контексте, где вы выполняете запрос?
Проблема заключается в том, что вы не хорошо создали экземпляр вашего контекста данных (ctx) или может быть такой переменной (ctx), которая не отображается в этом контексте.

+0

вы знаете, что я использую VS 2010 создать .edmx, и теперь я хотел бы получить данные из Territoy с помощью LINQ, но ctx не отображается. Resharper скажите мне «создать локальную переменную ctx», что я должен сделать? –

+1

Вы можете создать локальную переменную, или вы также можете объявить приватную переменную в области уровня контроллера, а затем инициализировать эту переменную в контрструкторе контроллера. Затем переменная будет видна во всех ваших действиях. –

2

не Shoul быть:

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

Нет, где красный. –