我正在使用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
答案 0 :(得分: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