私がこのように質問したのは、潜在的に簡単であるが Devart 固有の解決策があると想像できるためですが、同様の状況に対する非常に一般的な解決策もあるかもしれません。
私は Devart LINQ To Oracle を使用しています。通常ItemX、設計時に lqml ファイルのようなクラスを作成し、その背後にあるテーブルを指定します。次に、実行時に aTable(Of ItemX)を使用してデータベースにクエリを実行します。ここまでは順調ですね。
今、2 つの同一のテーブルがItemXありItemY、ランタイム フラグに応じて、どちらか一方からクエリを実行する必要がある状況があります。これ以外は、すべてのコードは同一であり、そのまま維持したいと考えています。ただし、Table(Of ItemX)は厳密に型指定されているため、すべてのバージョンを複製する必要があり、唯一の違いはデータ型です。
したがって、Devart 固有の解決策は次のようになります。1 つのアイテム クラスを単に と呼びItemますが、実行時に何かを実行して、Devart DataContext が別のバッキング テーブルを使用するようにします。次に、すべてのコードでベースItemオブジェクトが使用されますが、データベースとの間で永続化する場合は、使用するテーブルが認識されます。これを行う方法はありますか?
より一般的なアプローチは、IQueryable チェーンにフックして、クラスItemXとItemYクラスを内部で使用し、すべてをItem外部シグネチャの基本クラスに変換する方法です。ただし、質問を表現するのに十分なほど明確に想像することさえできません。これを達成する方法はありますか?