Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Vse_shpory_po_OOP_polnye.doc
Скачиваний:
6
Добавлен:
20.09.2019
Размер:
295.94 Кб
Скачать

29. Технология linq to sql. Назначение технологии. Класс контекста данных и основные атрибуты для создания контекста данных.

«LINQ to SQL» это новая технология семейства технологий ADO.NET. Она работает только с Microsoft SQL Server. Основная цель LINQ to SQL является обеспечение согласованности между реляционными БД и программной логикой взаимодействия с ними. LINQ to SQL позволяет встроить доступ к данным в код программы. При программировании с помощью LINQ to SQL скрываются множество типов ADO.NET, таких как SqlConnection, SqlCommand, or SqlDataAdapter. Вместо того чтобы обрабатывать реляционную БД в виде потока записей, можно рассматривать их в виде коллекций объектов определенного класса – класса сущностей. Для работы с технологией LINQ to SQL требуется добавить к проекту ссылку (Reference) на компонент: System.Data.Linq.dll. Задать в программе используемые пространства имен: using System.Data.Linq; using System.Data.Linq.Mapping;

Классы сущностей (entity classes) это классы программы, которые представляют данные содержащиеся в реляционной БД, с которой выполняется работа. С программной точки зрения классы сущностей это описания классов, которые аннотированы с помощью специальных атрибутов технологии «LINQ to SQL» (таких, как [Table] и [Column]), которые связывают их с физическими таблицами в БД. Например, класс сущностей для таблицы Customers:

[Table(Name = "Customers")]

public class Customer {

public string CustomerID;

public string City; }

Атрибут Table. С ним можно задавать следующие параметры: 1) Name – имя таблицы, которой соответствует, описываемый класс сущностей. Например: [Table (Name = xxxxx)]. Атрибут Column. С ним можно задавать следующие параметры: 1) Name – имя соответствующей колонки в таблице; 2) DbType – тип поля записи; 3) CanBeNull – может ли быть значение null у поля записи. 4) IsPrimaryKey – указание, что поле является первичным ключом. Например: [Column (IsPrimaryKey=true)]. После того, как описан класс сущностей запросы к СУБД передаются с помощью класса DataContext. Данный класс отвечает за трансляцию LINQ запросов в соответствующие SQL запросы и передачу их конкретной БД. В некотором смысле DataContext похож на объект Connection, так как он также требует строку соединения. Однако, в отличии от класса Connection, класс DataContext имеет методы, которые связывают результаты выполнения запроса (выборку записей) с описанными классами сущностей.

Класс DataContext описывает способ получения экземпляров класса сущностей, которые могут использоваться в программе. После получения экземпляров сущностей можно менять их состояние любым желательным способом (добавлять, изменять и т.п.) и предоставлять измененный объект назад для последующей обработки. В этом смысле класс DataContext похож на класс DataAdapter.

Конструктор: DataContext ctx = new DataContext(<строка соединения>). Методы: 1) проверки соединения с базой данных DatabaseExists() – если true, то соединение выполнено успешно. 2) получение таблицу Table<имя таблицы> GetTable<имя таблицы>(). Например: Table<Inventory> invTable = ctx.GetTable<Inventory>(); 3) Метод сохранения изменений SubmitChanges(): ctx.SubmitChanges(); Класс Table<> Описывает таблицу указанного типа в базе данных. Типизированный класс, для которого задается используемый им тип данных. Table <Customers> tbc; Хранит объекты классов сущностей, того класса, который указан в угловых скобках. Предоставляет методы для работы LINQ запросов. Свойство IsReadOnly возвращает true если таблица описана только для чтения из БД. Для получения ссылки на объект класса Table<> используется метод GetTable<> класса DataContext: DataContext cnt = new DtaContext(strconn); Table<MyTable> tbl = cnt.GetTable<MyTable>; Добавления новой записи в таблицу InsertOnSubmit(): tbl.InsertOnSubmit(object); Удаление записи из таблицы DeleteOnSubmit(): tbl.DeleteOnSubmit(object);

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]