0

我正在使用 wcf 休息服务。我正在查询 sql server 数据库以从我从 GUI 传递的表名中返回行。发生的情况是有时数据库中不存在表,我使用的是 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 回答