1

次のように宣言されたビューV1とV2があるとします。

create view V2 as
select V1.*, V2.C1, V2.C2, V2.C3
from V1
join V2 on V1.Key = V2.Key
where bla-bla

したがって、V2はV1の結果セットを絞り込み、いくつかの結合を追加します。そして、C#には検索ルーチンがあります

IEnumerable<V1> GetData(MyFilter filter, MySortOrder order) {}

V2で再利用したい。データベースではなくL2Sで結合を実行せずに可能ですか?データベースコンテキストなどで基本クラスを手動で作成する必要がありますか?

4

1 に答える 1

0

のプロパティを含むインターフェイスを作成し、そこから(sqlmetal.exeで生成された)宣言V1を継承することにV1なりました(部分的なクラスに感謝します!):V2

public interface IV {
    int P1 {get;set;}
    int P2 {get;set;}
}

public partial class V1: IV { }
public partial class V2: IV { }

その後変更GetData()

IEnumerable<IV> GetData(Func<MyDataContext, IEnumerable<IV>> MyFilter filter, MySortOrder order) {}

myDataContext.V1したがって、またはmyDataContext.V2エンティティセットのいずれかを渡して、結果をキャストできます。それが最善の解決策であるかどうかはわかりませんが、それは乾燥していて、私は幸せです。

于 2012-07-02T12:40:22.937 に答える