2012-02-17 21 views
0

linq to sql datacontextを使用して、多くの同様のテーブルにアクセスしているプログラムがあります。 Linq to SQLテーブルは共通のインタフェースを実装していますか?これは、LINQを使用してSQLすることは可能です私は、同様のテーブルのいずれかで仕事ができる方法を記述したいと思いますので、LINQ to SQL:インターフェイスで複数のデータコンテキストを簡単に使用

Dim myTable as ILinqDataTable 
If switch = "TableA" then myTable=myDataContext.TableA Else myTable=myDataContext.TableB 

ような何かを行うことが素晴らしいことですか?

更新

Dim datasource as IlinqDatatable // new interface that I implemented based on John's suggestion 
Dim rec = From l in datasource where l.exported=false select l //raises "Late binding operations cannot be converted to an expression tree." 

答えて

2

あなたが使用できる組み込みのインターフェイスはありません。しかし、自分で作成することもできます。

LINQからSQLに生成されるクラスは部分クラスです。これにより、別のクラスパーツを作成し、そのクラスがインターフェイスを実装するように指定することができます。このようにして、すべての同様のテーブルに同じインターフェイスを実装させることができます。

+0

ありがとうございました。だから私はdatacontextの部分クラスの背後にあるコードを見ると、Partial Class TableAのようなものが見えます...私は部分クラスのようなものに変更する必要があります。TableAはMyInterfaceを実装していますか? – bernie2436

+0

いいえ、別のファイルで、独自の 'Partial Class TableA Implements MyInterface'を作成してください。部分クラスの考え方は、1つのクラスを複数のパートで構成できるということです。 –

+0

John、インタフェースを追加しようとしましたが、コンパイラエラーが発生します。「遅延バインディング操作を式ツリーに変換できません。おそらく、オブジェクト型が実行時に割り当てられているとしたら(linqはインターフェイスを実装しているオブジェクトからクエリを実行しているため)、これをSQLクエリに変換できませんか? DimデータソースをIlinqDatatableとして返します。 l.exported = falseのlからデータソースでlを選択すると、//このエラーが発生します – bernie2436

関連する問題