コンテンツへスキップ

LINQ to SQL で SQL Viewを更新可能にする

2010年12月21日

ASP.NET動的データWebサイトを作っているときのことです。

”LINQ to SQL クラス”をプロジェクトに追加して、サーバーエクスプローラーからドラッグドロップしてViewを登録したのですが、Webサイトをブラウザで表示してみるとそのViewは参照オンリーとなっており、編集や削除等のリンクが表示されませんでした。

dbmlの分離コードを確認してみると、そのView用の拡張メソッド(Insert, Update, Delete)が自動生成されていません。これじゃあ表示されないわけですよね。

LINQ to SQL はViewに対応してないのかなと思い、エンティティの方で試してみました。すると、スキーマインポート時の”主キーが設定されていないので・・・”どうのこうのという警告が目につきました。

ん・・・、主キー・・・!

再びdbmlを開き、Viewの主キーになるべきフィールドに主キーの設定をして分離コードを覗いてみると、拡張メソッドが自動生成されているではありませんか!

Webサイトを開いてみると、バッチリ編集用リンクが表示されていました。よかった。

#この度試したViewは更新可能なViewではないので、INSTEAD OFトリガーで更新をカスタマイズしないと・・・。Viewにした理由はGeography型の列を含むテーブルをdbmlにドロップしてみたところ、”デザイナーでサポートされていないデータ型が含まれています”と言われてしまったので、その列にはPOINTしか登録しないのでLatとLongに分けたからです。INSTEAD OFトリガーで、LatとLongをGeography型に変換します。

From → .NET, SQL

コメントする

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。