Поделиться через


Возможности LINQ to SQL

Обновлен: November 2007

LINQ to SQL поддерживает все основные возможности, необходимые для разработчиков на SQL. Можно запрашивать данные, вставлять, обновлять и удалять сведения из таблиц.

Выбор

Выборка (проекция) достигается написанием запроса LINQ на выбранном вами языке программирования и последующим выполнением этого запроса для получения результатов. Средства LINQ to SQL сами преобразуют все необходимые операции в требуемые операции SQL, которые вам знакомы. Дополнительные сведения см. в разделе LINQ to SQL.

В следующем примере извлекаются названий компаний клиентов из Лондона, которые затем отображаются в окне консоли.

' Northwnd inherits from System.Data.Linq.DataContext.
Dim nw As New Northwnd("c:\northwnd.mdf")

Dim companyNameQuery = _
    From cust In nw.Customers _
    Where cust.City = "London" _
    Select cust.CompanyName

For Each customer In companyNameQuery
    Console.WriteLine(customer)
Next
// Northwnd inherits from System.Data.Linq.DataContext.
Northwnd nw = new Northwnd(@"northwnd.mdf");

var companyNameQuery =
    from cust in nw.Customers
    where cust.City == "London"
    select cust.CompanyName;

foreach (var customer in companyNameQuery)
{
    Console.WriteLine(customer);
}

Вставка

Для выполнения SQL Insert просто нужно добавить объекты в созданную объектную модель и вызвать метод SubmitChanges в DataContext.

В следующем примере новый клиент и сведения о нем добавляются в таблицу Customers с помощью метода InsertOnSubmit.

' Northwnd inherits from System.Data.Linq.DataContext.
Dim nw As New Northwnd("c:\northwnd.mdf")

Dim cust As New Customer With {.CompanyName = "SomeCompany", _
    .City = "London", _
    .CustomerID = 98128, _
    .PostalCode = 55555, .Phone = "555-555-5555"}
nw.Customers.InsertOnSubmit(cust)
' At this point, the new Customer object is added in the object model.
' In LINQ to SQL, the change is not sent to the database until
' SubmitChanges is called.
nw.SubmitChanges()
// Northwnd inherits from System.Data.Linq.DataContext.
Northwnd nw = new Northwnd(@"northwnd.mdf");

Customer cust = new Customer();
cust.CompanyName = "SomeCompany";
cust.City = "London";
cust.CustomerID = "98128";
cust.PostalCode = "55555";
cust.Phone = "555-555-5555";
nw.Customers.InsertOnSubmit(cust);

// At this point, the new Customer object is added in the object model.
// In LINQ to SQL, the change is not sent to the database until
// SubmitChanges is called.
nw.SubmitChanges();

Обновление

Чтобы Update запись в базе данных, сначала следует извлечь элемент и изменить его непосредственно в объектной модели. После изменения объекта вызовите метод SubmitChanges в DataContext, чтобы обновить базу данных.

В следующем примере извлекаются все клиенты из Лондона. Затем название города меняется с "Лондон" на "Лондон — Метро". Наконец, вызывается метод SubmitChanges для отправления изменений в базу данных.

Dim nw As New Northwnd("c:\northwnd.mdf")
Dim cityNameQuery = _
    From cust In nw.Customers _
    Where cust.City.Contains("London") _
    Select cust

For Each customer In cityNameQuery
    If customer.City = "London" Then
        customer.City = "London - Metro"
    End If
Next
nw.SubmitChanges()
Northwnd nw = new Northwnd(@"northwnd.mdf");

var cityNameQuery =
    from cust in nw.Customers
    where cust.City.Contains("London")
    select cust;

foreach (var customer in cityNameQuery)
{
    if (customer.City == "London")
    {
        customer.City = "London - Metro";
    }
}
nw.SubmitChanges();

Удаление

Чтобы Delete элемент, удалите его из коллекции, в которую он входит, а затем вызовите метод SubmitChanges в DataContext, чтобы применить изменение.

Bb882643.alert_note(ru-ru,VS.90).gifПримечание.

LINQ to SQL не распознает операции каскадного удаления. Если требуется удалить строку в таблице, имеющей ограничения, см. раздел Как удалить строки из базы данных (LINQ to SQL).

В следующем примере из базы данных извлекается клиент, CustomerID которого равен 98128. Затем, после подтверждения извлечения строки клиента, вызывается метод DeleteOnSubmit, необходимый для удаления объекта из коллекции. Наконец, вызывается метод SubmitChanges для передачи удаления в базу данных.

Dim nw As New Northwnd("c:\northwnd.mdf")
Dim deleteIndivCust = _
    From cust In nw.Customers _
    Where cust.CustomerID = 98128 _
    Select cust

If deleteIndivCust.Count > 0 Then
    nw.Customers.DeleteOnSubmit(deleteIndivCust.First)
    nw.SubmitChanges()
End If
Northwnd nw = new Northwnd(@"northwnd.mdf");
var deleteIndivCust =
    from cust in nw.Customers
    where cust.CustomerID == "98128"
    select cust;

if (deleteIndivCust.Count() > 0)
{
    nw.Customers.DeleteOnSubmit(deleteIndivCust.First());
    nw.SubmitChanges();
}

См. также

Основные понятия

Модель объектов LINQ to SQL

Приступая к работе (LINQ to SQL)

Другие ресурсы

Руководство по программированию (LINQ to SQL)