LINQ to SQL では、SQL 開発者として期待されるすべての主要な機能がサポートされています。 情報のクエリを実行したり、テーブルから情報を挿入、更新、削除したりできます。
選択
選択 (プロジェクション) は、独自のプログラミング言語で LINQ クエリを記述し、そのクエリを実行して結果を取得するだけで実現されます。 LINQ to SQL 自体は、必要なすべての操作を、使い慣れた必要な SQL 操作に変換します。 詳細については、「 LINQ to SQL」を参照してください。
次の例では、ロンドンの顧客の会社名が取得され、コンソール ウィンドウに表示されます。
// Northwnd inherits from System.Data.Linq.DataContext.
Northwnd nw = new Northwnd(@"northwnd.mdf");
// or, if you are not using SQL Server Express
// Northwnd nw = new Northwnd("Database=Northwind;Server=server_name;Integrated Security=SSPI");
var companyNameQuery =
from cust in nw.Customers
where cust.City == "London"
select cust.CompanyName;
foreach (var customer in companyNameQuery)
{
Console.WriteLine(customer);
}
' Northwnd inherits from System.Data.Linq.DataContext.
Dim nw As New Northwnd("c:\northwnd.mdf")
' or, if you are not using SQL Server Express
' Dim nw As New Northwnd("Database=Northwind;Server=dschwart7;Integrated Security=SSPI")
Dim companyNameQuery = _
From cust In nw.Customers _
Where cust.City = "London" _
Select cust.CompanyName
For Each customer In companyNameQuery
Console.WriteLine(customer)
Next
挿入
SQL Insert
を実行するには、作成したオブジェクト モデルにオブジェクトを追加し、SubmitChangesでDataContextを呼び出します。
次の例では、新しい顧客と顧客に関する情報が、Customers
を使用して InsertOnSubmit テーブルに追加されます。
// 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();
' 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()
更新中
データベース エントリを Update
するには、まず項目を取得し、オブジェクト モデルで直接編集します。 オブジェクトを変更したら、SubmitChangesでDataContextを呼び出してデータベースを更新します。
次の例では、ロンドンからのすべての顧客が取得されます。 その後、都市の名前が "London" から "London - Metro" に変更されます。 最後に、変更をデータベースに送信するために 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();
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()
削除中
項目をDelete
するには、そのアイテムが属するコレクションから項目を削除し、SubmitChangesのDataContextを呼び出して変更をコミットします。
注
LINQ to SQL では、連鎖削除操作は認識されません。 テーブルに対する制約がある行を削除する場合は、「 方法: データベースから行を削除する」を参照してください。
次の例では、 CustomerID
が 98128
の顧客をデータベースから取得します。 次に、顧客の行が取得されたことを確認した後、コレクションからそのオブジェクトを削除するために DeleteOnSubmit が呼び出されます。 最後に、削除をデータベースに転送するために SubmitChanges が呼び出されます。
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();
}
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