Доступные версии документации

Класс DatabaseTable<T>

Класс DatabaseTable<T> транслирует методы интерфейса IQueryable<T> в соответствующие конструкции языка SQL СУБД ЛИНТЕР.

Чтобы получить описание методов IQueryable<T> надо перейти по ссылке.

Примечание

Если необходимо явно указать тип переменной для хранения экземпляров класса DatabaseTable<T>, то надо указать тип IQueryable<T>, потому что методы других интерфейсов, например, IEnumerable<T>, не транслируются в SQL-запросы и обработка данных занимает больше времени (см. блог пост).

Пример

// В примере создаётся класс Auto, который отображается на
// таблицу AUTO в демонстрационной БД. Выполняется метод
// IQueryable<T>.Count() для вычисления количества авто
// марки FORD.
// C#
using System;
using System.Linq;
using System.Data.Linq.Linter;
using System.Data.Linq.Mapping;

// Класс Auto отображается на таблицу AUTO
[Table(Name = "SYSTEM.AUTO")]
class Auto
{
  // Свойство Make отображается на поле MAKE
  [Column(Name = "MAKE")]
  public string Make { get; set; }
}

class DatabaseTableSample
{
  static void Main()
  {
    // Формирование строки соединения
    var connectionStr = "Data Source=LOCAL;User ID=SYSTEM;Password=MANAGER";

    // Создание контекста
    using (var context = new LinterDataContext(connectionStr))
    {
      // Вычисление количества автомобилей марки FORD
      var count = context.GetTable<Auto>().Count(a => a.Make == "FORD");

      // Отображение данных на экране
      Console.WriteLine("Количество авто марки FORD: " + count);
    }
  }
}

Если запустить данный пример, то будет выполнен следующий запрос:

SELECT COUNT(*) AS COUNT FROM SYSTEM.AUTO AS t0 WHERE (t0.MAKE = 'FORD');

Методы класса DatabaseTable<T> приведены в таблице 53.

Таблица 53. Методы класса DatabaseTable<T>
Метод Описание
DeleteOnSubmit(T) Указывает LINQ-провайдеру СУБД ЛИНТЕР выполнить SQL-команду удаления записи, которая соответствует указанному объекту.
InsertOnSubmit(T) Указывает LINQ-провайдеру СУБД ЛИНТЕР выполнить SQL-команду добавления записи, которая соответствует указанному объекту.

Библиотека

System.Data.Linq.Linter.dll

Пространство имён

System.Data.Linq.Linter

Декларация

public sealed class DatabaseTable<T> : IQueryable<T>, IEnumerable<T>, IQueryProvider, IDatabaseTable, IQueryable, IEnumerable where T : class

Конструкторы

Открытые конструкторы отсутствуют. Для создания экземпляров класса DatabaseTable<T> надо использовать метод LinterDataContext. GetTable<T> (см. пункт «GetTable<T>()»).

Свойства

Отсутствуют.

Заметили ошибку?
Выделите текст и нажмите Ctrl + Enter