2010年11月28日

LINQ to SQL 番外編 - IDENTITY列の扱い

   このエントリーをはてなブックマークに追加 Clip to Evernote
IDENTITY列の扱い テーブルに行を挿入した際に、自動で番号を振りたい場合に、列にIDENTITYを指定すると便利ですが、
挿入直後にこの値を取得したい場合に、LINQ to SQLはとても便利な機能を備えています。

主キーにIDENTITYを指定したカラムについて、O/Rデザイナーが作成する「LINQ to SQLエンティティクラス」の
プロパティがどうなっているのかを見てみましょう。

NortwindデータベースのCategoryテーブルのCategoryIDカラムがこれに該当します。
Northwind.designer.csを開いて、CategoryクラスのCategoryIDプロパティを見て ください。
以下のような記述があるのを確認できると思います。
注目すべきは、
の部分です。この指定があると、行が挿入されると自動で、CategoryIDカラムを 取得する select文が発行されます。

そのため、
というコードを実行すれば、SubmitChanges()後の、c1.CategoryIDには、データ ベースで
生成された値を参照することができます。

わずらわしいコーディングから解放されるのは、とても嬉しいですね。
ただ、2つのSQL文がリクエストされるのは避けたいという場合には、 ストアドプロシージャを利用することも検討してください。


 

この記事へのトラックバックURL

http://trackback.blogsys.jp/livedoor/gushwell/52094494