多くの場合、同じ構造 (同じ列名、型、順序) のデータセットを返すテーブル値関数のグループがあります。
関数を Linq2Sql デザイナーにドラッグすると、デザイナーは関数ごとに新しい匿名の結果の型を作成し、関数は結果に関して互換性がなくなります。
関数の結果の型が同じであることを設計者に伝えるには、関数を既存の Linq2Sql クラスにドラッグする必要があります。
それは問題ありませんが、毎回手動でクラスを作成する必要があります (デザイナー領域に新しいテーブルを挿入し、Insert何度も押して列を挿入し、列名、クライアント側のデータ型、およびサーバー側のデータ型を入力します)。多くの列と多くの関数がある場合、これは非常に時間がかかる可能性があります。
テーブル値関数を見てエンティティ (テーブル クラス) を自動的に作成するようにデザイナーに指示する方法はありますか?
私の現在の回避策は次のとおりです。
サーバー上にビューを作成します。
create view dbo.stupid_linq as select * from dbo.FunctionIWant(bogus_params);
そのビューをデザイナーにドラッグすると、エンティティが作成されます。
を削除して、データベースからエンティティのリンクを解除します
Source
。エンティティの名前を変更します。
サーバー上のビューを削除します。
テーブル値関数をエンティティにドラッグします。