2016-09-06 119 views
0

私はEntity Framworkをデータベース優先アプローチで使用しています。条件に基づいてテーブル名やビュー名を動的に変更したいEntity Frameworkの動的テーブル名

ここでは、レコードを取得するためにV_OVT_VLD_340B_DNA_CLDまたはV_OVT_B_tableまたはV_OVT_c_tableを使用しています。

ソースに基づいて、別のテーブル名を呼び出してレコードを取得する必要があります。コード全体のコードスニペットは、テーブル名を除いて同じです。

私は動的条件に基づいてデシベルコンテキストにテーブル名を付けることにより、上記の実装を変更したいコード

private dOVT_OutlierViewEntities db = new dOVT_OutlierViewEntities(); 

if(source == "a") 
{ 
    var result = this.db.V_OVT_VLD_340B_DNA_CLD.Where(x => x.DNA_PGM_PRTN_ID == partitionId && x.CLIENT_ID == clientId).ToList().Select(y => new ValidationModel 
       { 
        claim_validation_test_id = new List<byte?> { y.CLAIM_VLD_TEST_ID }, 
        claim_id = y.CLAIM_ID, 
        Provider_ID = y.Provider_ID, 

       }).Take(id).ToList(); 
} 

if(source == "b") 
{ 
    var result = this.db.v_OVT_B_table.Where(x => x.DNA_PGM_PRTN_ID == partitionId && x.CLIENT_ID == clientId).ToList().Select(y => new ValidationModel 
        { 
         claim_validation_test_id = new List<byte?> { y.CLAIM_VLD_TEST_ID }, 
         claim_id = y.CLAIM_ID, 
         Provider_ID = y.Provider_ID, 

        }).Take(id).ToList(); 
} 

if(source == "c") 
{ 
    var result = this.db.v_OVT_C_table.Where(x => x.DNA_PGM_PRTN_ID == partitionId && x.CLIENT_ID == clientId).ToList().Select(y => new ValidationModel 
        { 
         claim_validation_test_id = new List<byte?> { y.CLAIM_VLD_TEST_ID }, 
         claim_id = y.CLAIM_ID, 
         Provider_ID = y.Provider_ID, 

        }).Take(id).ToList(); 

} 

以下を参照してください。

string tableName = string.empty 

if(source == "a") 
    tableName = "aTable"; 

if(source == "b") 
    tableName="bTable"; 

this.db.tableName.where()..... 

これは可能ですか?

答えて

0

あなたはこのような何かを行うことができます。..

string tableName = string.empty 

    if(source == "a") 
     tableName =db.GetTable("aTable"); 

    if(source == "b") 
     tableName=db.GetTable("bTable"); 


    and then query like.. 

    tableName.where() 
+0

何GetTable()メソッドを意味しました。私はコンテキスト内で "GetTable"という名前のメソッドを見つけることができません – SivaRajini

関連する問題