0

wcf レスト サービスを使用しています。GUIから渡したテーブル名から行を返すために、SQLサーバーデータベースにクエリを実行しています。何が起こるかというと、データベースにテーブルが存在しない場合があり、Linq の singleorDefault メソッドを使用しています。したがって、データベースにテーブルがない場合、例外がスローされます。どうすればこれを処理できますか? テーブルが見つからない場合でも、特定のロジックを実行する必要があります。これが私のコードです

var strTableQuery = "Select * from " + tableName // i get this tableName from my GUI

Tables = Context.Database.SqlQuery<TableClass>(strTableQuery );  
var x = Tables.SingleorDefault(); // i get exception on this line

if (x != null){
    // do some logic
} else {
    //do some logic
}

Update1 として例外が発生しますInvalid object name tableName

4

1 に答える 1

2

前にこのクエリを起動して、テーブルが存在するかどうかを確認してください。

SELECT count(*) FROM INFORMATION_SCHEMA.TABLES  WHERE TABLE_SCHEMA = 'SomeSchema' AND  TABLE_NAME = 'someTable'

アップデート

という名前のテーブルを作成しますTable_Existing_In_Your_Schema(name varchar, create_on datetime);

このテーブルを global.asax.cs の静的辞書に読み込みます

Dictionary<string, DateTime> _allTablesCollection;

すべてのクエリを起動するための共通モジュール (dal など) を作成します。このモジュールでは、クエリを実行する前に

if(!_allTablesCollection.keys.Contains("someTable"))
     createTable("someTable");
     update_the_dictionary_with_this_key

//now fire your query
于 2013-08-15T14:24:17.003 に答える