Класс 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.
Метод | Описание |
---|---|
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 >()»).
Свойства
Отсутствуют.