- 113 名前:デフォルトの名無しさん (ワッチョイ 1752-R6SS) mailto:sage [2019/12/20(金) 07:23:20 ID:NMJ3uqPu0.net]
- >>107
当初は利用目的がわからなかったため、.GetProperties() やジェネリックで対象を動的に指定して DbSet<T> 型プロパティを呼び出す方法を提案しましたが、 DbContext に MyEntiyty1, MyEntity2, ... と 100 個のテーブルがあり、個々のテーブルに対応した Test1, Test2 ... というテスト関数を地の文で定義しており、 これをシステマティックに対応させたいというのが課題の本質であるなら、実はジェネリックとか使わなくてもできます。 テスト関数 Test1 は DbSet<MyEntityDataModel1> が入力で bool が出力として bool result1 = context.MyEntiti1.Test1() or Test1(context.MyEntity1) と記述できるように定義されていると思いますが、これを下記のように変形すればよいと思います。 1. MyDbContext を入力として bool result1 = context.Test1() or Test1(context) と記述できるようにテスト関数を書き換える (Test1 内部の冒頭で context.MyEntity1 と対象を指定する) 2. テスト関数をラムダ式にし、地の文で定義している Test1, Test2 ... というメソッド群をリストオブジェクトにする List<Func<MyDbContext, bool>> TestList = new [] { context => { context.MyEntity1 /* ... */ }, context => { context.MyEntity2 /* ... */ }, ... }; 3. using ブロック内 for/foreach 文でリストオブジェクトをキックする using (var context = new MyDbContext()) { bool result[100]; for (var i = 0; i < 100; i++) { result[i] = TestList[i](context); } }
|

|