Linq-entities
LINQ-エンティティ
ADO.NET Entity Frameworkの一部であるLINQ to Entitiesは、LINQ to SQLよりも柔軟性がありますが、その複雑さと主要な機能の欠如によりあまり人気がありません。 ただし、LINQ to EntitiesはOracle、MySQLなどの多数のデータプロバイダーでのデータクエリを容易にするため、SQLサーバーデータベースでのみデータクエリを許可するLINQ to SQLの制限はありません。
さらに、ユーザーがLINQ to Entitiesを介してクエリを実行するためにデータソースコントロールを利用でき、余分なコーディングを必要とせずに結果をバインドできるという意味で、ASP.Netから主要なサポートを受けています。
LINQ to Entitiesは、これらの利点のために、今日のデータベースでLINQを使用するための標準メカニズムになっています。 LINQ to Entitiesを使用して、クエリされたデータの詳細を変更し、バッチ更新を簡単にコミットすることもできます。 LINQ to Entitiesの最も興味深い事実は、SQLと同じ構文を持ち、Join、Select、OrderByなどの標準クエリ演算子の同じグループさえ持っていることです。
LINQ to Entitiesクエリの作成および実行プロセス
- ObjectContext (エンティティ接続)からの ObjectQuery インスタンスの構築
- 新しく構築されたインスタンスを使用して、C#またはVisual Basic(VB)でクエリを作成する
- LINQの標準クエリ演算子とLINQ式のコマンドツリーへの変換
- 発生した例外をクライアントに直接渡すクエリを実行する
- すべてのクエリ結果をクライアントに返す
ここでは、 ObjectContext は、 Entity Data Model との対話を可能にする主要なクラスです。つまり、LINQをデータベースに接続するブリッジとして機能します。 ここでのコマンドツリーは、Entityフレームワークと互換性のあるクエリ表現です。
一方、Entity Frameworkは、実際には*オブジェクトリレーショナルマッパー*であり、ビジネスオブジェクトやデータベーステーブルごとのエンティティを生成し、作成、更新、削除などのさまざまな基本操作を容易にする開発者によってORMと略されます。読んで。 次の図は、エンティティフレームワークとそのコンポーネントを示しています。
エンティティモデルでLINQを使用したADD、UPDATE、およびDELETEの例
以下の手順に従って、最初にエンティティモデルを追加します。
- ステップ1 *-プロジェクトを右クリックして[新しい項目を追加]をクリックすると、以下のようにウィンドウが開きます。 ADO.NET Entity Data Modelを選択し、名前を指定して[追加]をクリックします。
ステップ2 *-[データベースから生成]を選択します。
- ステップ3 *-ドロップダウンメニューから[データベース接続]を選択します。
- ステップ4 *-すべてのテーブルを選択します。
次に、次のコードを記述します。
using DataAccess;
using System;
using System.Linq;
namespace LINQTOSQLConsoleApp {
public class LinqToEntityModel {
static void Main(string[] args) {
using (LinqToSQLDBEntities context = new LinqToSQLDBEntities()) {
//Get the List of Departments from Database
var departmentList = from d in context.Departments
select d;
foreach (var dept in departmentList) {
Console.WriteLine("Department Id = {0} , Department Name = {1}",
dept.DepartmentId, dept.Name);
}
//Add new Department
DataAccess.Department department = new DataAccess.Department();
department.Name = "Support";
context.Departments.Add(department);
context.SaveChanges();
Console.WriteLine("Department Name = Support is inserted in Database");
//Update existing Department
DataAccess.Department updateDepartment = context.Departments.FirstOrDefault(d ⇒d.DepartmentId == 1);
updateDepartment.Name = "Account updated";
context.SaveChanges();
Console.WriteLine("Department Name = Account is updated in Database");
//Delete existing Department
DataAccess.Department deleteDepartment = context.Departments.FirstOrDefault(d ⇒d.DepartmentId == 3);
context.Departments.Remove(deleteDepartment);
context.SaveChanges();
Console.WriteLine("Department Name = Pre-Sales is deleted in Database");
//Get the Updated List of Departments from Database
departmentList = from d in context.Departments
select d;
foreach (var dept in departmentList) {
Console.WriteLine("Department Id = {0} , Department Name = {1}",
dept.DepartmentId, dept.Name);
}
}
Console.WriteLine("\nPress any key to continue.");
Console.ReadKey();
}
}
}
上記のコードをコンパイルして実行すると、次の結果が生成されます-