SingleOrDefault linq方法抛出异常

时间:2013-08-15 14:13:27

标签: c# sql linq sql-server-2012 wcf-rest

我正在使用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

1 个答案:

答案 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