Если я не могу использовать datacontext в статическом - PullRequest
1 голос
/ 19 апреля 2010

У меня есть это

public static class MyClassHelper
{
  DataContex db = new DataContext();

  public static Type MyMethod()
  {
    //Do Something with db
    // such as db.myTable
  }
}

Я получаю следующую ошибку: " Требуется ссылка на объект для нестатического поля, метода или свойства ... "

Есть ли способ обойти это?

Как насчет этого. У меня есть объект, который содержит только целые числа, что хорошо для всех внутренних функций, поскольку позволяет мне связывать таблицы. Но иногда мне нужно отображать некоторую информацию пользователю. Вот почему я хотел бы создать статический метод, чтобы он читал целое число, смотрел в БД и отображал имя вместо числа.

Я хочу, чтобы это был статический метод, чтобы я мог использовать его в своем шаблоне просмотра.

Спасибо за помощь

Ответы [ 3 ]

9 голосов
/ 19 апреля 2010

Как @Oskar указывает, что ваш статический метод не может ссылаться на переменные экземпляра, только на статические переменные. Однако вместо того, чтобы сделать DataContext статическим, что будет означать, что он будет существовать на протяжении всей жизни программы, просто создайте DataContext, как необходимо внутри метода. DataContext лучше всего подходит для шаблона «единица работы» и воссоздается по мере необходимости только для выполняемой задачи, а не для существования в качестве объекта с длительным сроком службы. Также помните, что DataContext не является поточно-ориентированным; вы будете создавать некоторые действительно трудные для поиска ошибки, если не сделаете все свои методы поточно-ориентированными. Гораздо проще просто воссоздать контекст данных.

2 голосов
/ 19 апреля 2010

Статический метод может видеть только статические элементы. Кроме того, статический класс может иметь только статический член. Вы должны пометить вашу базу данных как статическую:

static DataContext db = new DataContext(); 
0 голосов
/ 19 апреля 2010

Да. Вам также нужно объявить ваш DataContext как статический.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...