前回の続きだよ。
DLinqで読み取るだけだとイマイチ(いや便利だけど)だよね。
やっぱり書き戻しもしないとね。
どうやるのか、自動生成されたクラスのメソッドを眺めてみたよ。
そうしたらSystem.Data.Linq.DataContextクラスにSubmitChangesっていうメソッドがあるから使ってみたよ。
前回の例をちょびっと書き換え。
EDU edu = new EDU(@"Server=KAZUKI-PC\SQLEXPRESS;Database=EDU;Integrated Security=true"); edu.Log = Console.Out; var emps = from emp in edu.Employees where emp.ID == 1 select emp; foreach (var emp in emps) { emp.Name = "ほげほげ"; } edu.SubmitChanges();
太郎さんの名前をほげほげに書き換えちゃうイメージだよね。
早速実行。
SELECT [t0].[ID], [t0].[Name], [t0].[DeptID] FROM [Employees] AS [t0] WHERE [t0].[ID] = @p0 -- @p0: Input Decimal (Size = 0; Prec = 29; Scale = 4) NOT NULL [1] SqlProvider\AttributedMetaModel UPDATE [Employees] SET [Name] = @p3 FROM [Employees] WHERE ([Name] = @p0) AND ([DeptID] = @p1) AND ([ID] = @p2) SELECT NULL AS [EMPTY] FROM [Employees] AS [t1] WHERE ((@@ROWCOUNT) > 0) AND ([t1].[ID] = @p4) -- @p0: Input NVarChar (Size = 2; Prec = 0; Scale = 0) NOT NULL [太郎] -- @p1: Input Decimal (Size = 0; Prec = 29; Scale = 4) NOT NULL [1] -- @p2: Input Decimal (Size = 0; Prec = 18; Scale = 0) NOT NULL [1] -- @p3: Input NVarChar (Size = 4; Prec = 0; Scale = 0) NOT NULL [ほげほげ] -- @p4: Input Decimal (Size = 0; Prec = 18; Scale = 0) NOT NULL [1] SqlProvider\AttributedMetaModel
楽観的なロックをかけてるような雰囲気を出してるUPDATE文が発行されたね。
UPDATEはできたけどINSERTとDELETEの方法は、まだ未調査だよ。
眠いから今日はここまで。