Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Разработка приложений баз данных (Visual Studio 2008).docx
Скачиваний:
143
Добавлен:
26.03.2016
Размер:
1.01 Mб
Скачать

Как соединиться с базой данных (linq to sql)

Основным каналом, через который выполняется подключение к базе данных, извлекаются объекты и отправляются изменения обратно в базу данных, является класс DataContext. КлассDataContextможно использовать точно так же, как используется класс ADO.NETSqlConnection. В действительности класс DataContext инициализируется с помощью предоставляемого пользователем подключения или строки подключения.

Пример

// or, if you are not using SQL Server Express

// Northwnd nw = new Northwnd("Database=Northwind;Server=server_name;Integrated Security=SSPI");

// DataContext takes a connection string.

DataContext db = new DataContext(@"c:\Northwnd.mdf");

// Get a typed table to run queries.

Table<Customer> Customers = db.GetTable<Customer>();

// Query for customers from London.

var query =

from cust in Customers

where cust.City == "London"

select cust;

foreach (var cust in query)

Console.WriteLine("id = {0}, City = {1}", cust.CustomerID, cust.City);

Каждая таблица базы данных представлена коллекцией Table, доступной с помощью метода GetTable, который возвращает коллекцию объектов таблицы:

Список перегрузки

Имя

Описание

GetTable<TEntity>()

Возвращает коллекцию объектов определенного типа, где тип определяется параметром TEntity.

GetTable(Type)

Возвращает коллекцию объектов определенного типа, где тип определяется параметром type.

Рекомендация заключается в объявлении строго типизированного класса DataContextвместо использования базового классаDataContextи методаGetTable. Строго типизированный классDataContextобъявляет все коллекцииTableв качестве членов контекста, как показано в следующем примере.

public partial class Northwind : DataContext

{

public Table<Customer> Customers;

public Table<Order> Orders;

public Northwind(string connection) : base(connection) { }

}

После этого создание запроса на получение клиентов из Лондона можно осуществить более простым способом:

Northwnd db = new Northwnd(@"c:\Northwnd.mdf");

var query =

from cust in db.Customers

where cust.City == "London"

select cust;

foreach (var cust in query)

Console.WriteLine("id = {0}, City = {1}", cust.CustomerID,

cust.City);

Типичные действия по использованию linq to sql

Чтобы реализовать приложение LINQ to SQL, следует выполнить действия, описанные в этом разделе. Обратите внимание, что многие их этих действий являются необязательными. В большинстве случаев можно использовать объектную модель в состоянии, установленном по умолчанию.

Создание модели объектов

Первый шаг состоит в создании модели объектов на основе метаданных существующей реляционной базы данных. Объектная модель представляет базу данных в соответствии с языком программирования, выбранным разработчиком.

Для создания модели предусмотрено три средства.

  • Конструктор Реляционный конструктор объектов. Этот конструктор предоставляет многофункциональный пользовательский интерфейс для создания объектной модели из существующей базы данных. Данное средство, являющееся частью интегрированной среды разработки Visual Studio, лучше всего подходит для баз данных небольшого или среднего размера.

  • Средство создания кода SQLMetal.По своему набору параметров эта программа командной строки несколько отличается от конструктораРеляционный конструктор объектов. Данное средство лучше всего подходит для моделирования больших баз данных. Дополнительные сведения см. в разделеSqlMetal.exe (средство создания кода).

  • Редактор кода. Можно написать собственный код с помощью редактора кода Visual Studio или другого редактора кода. Этот подход может привести к большому числу ошибок, поэтому при наличии существующей базы данных, которую можно использовать для создания модели с помощью Реляционный конструктор объектовили программыSQLMetal, использовать его не рекомендуется. Однако редактор кода становится ценным инструментом, когда требуется уточнить или изменить код, уже созданный с помощью других средств. Дополнительные сведения см. в разделеКак настроить классы сущностей с помощью редактора кода (LINQ to SQL).