Класс 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=MANAGER8";

    // Создание контекста
    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 >()»).

Свойства

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