Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SingleOrDefault linq方法引发异常_C#_Sql_Linq_Sql Server 2012_Wcf Rest - Fatal编程技术网

C# SingleOrDefault linq方法引发异常

C# SingleOrDefault linq方法引发异常,c#,sql,linq,sql-server-2012,wcf-rest,C#,Sql,Linq,Sql Server 2012,Wcf Rest,我正在使用wcf rest服务。我正在查询sql server数据库以从GUI传递的表名返回行。发生的情况是,有时数据库中不存在表,我使用的是Linq的singleorDefault方法。所以,若数据库中并没有表,那个么它会抛出异常。我该怎么办?即使找不到表,我仍然需要执行某些逻辑。 这是我的密码 var strTableQuery=“Select*from”+tableName//我从GUI获得这个tableName Tables=Context.Database.SqlQuery(strTa

我正在使用wcf rest服务。我正在查询sql server数据库以从GUI传递的表名返回行。发生的情况是,有时数据库中不存在表,我使用的是Linq的singleorDefault方法。所以,若数据库中并没有表,那个么它会抛出异常。我该怎么办?即使找不到表,我仍然需要执行某些逻辑。 这是我的密码

var strTableQuery=“Select*from”+tableName//我从GUI获得这个tableName
Tables=Context.Database.SqlQuery(strTableQuery);
var x=Tables.SingleorDefault();//我在这一行有例外
如果(x!=null){
//做些逻辑分析
}否则{
//做些逻辑分析
}
更新1
我得到异常,因为
无效的对象名tableName

在此之前触发此查询,并检查您的表是否存在

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

在您的模式中创建一个名为
table\u Existing\u的表(名称varchar,Create\u on datetime)

在global.asax.cs中的静态字典中加载此表

Dictionary<string, DateTime> _allTablesCollection;

为什么要针对不完整的模式工作?老实说,这听起来像是要解决的问题……还有SQL注入:
“Select*from”+tableName
。()@sircodesalot我正在使用json对象传递它。所以我认为sql注入应该没有问题
,我使用json对象传递它+1@Happy尝试传递
sys.objects;关闭
作为json中的表名,看看会发生什么。我知道这一点,但还有其他选择吗?捕获sql异常并执行您想要执行的操作:D
尝试{…}捕获(异常){/*耸肩*/}问题已解决+1顺便说一句,所以你我必须放两个试抓块。因为我已经在我的方法中尝试了catch block,正确的方法是Jon建议的。为什么要导入模式。你需要在基地解决这个问题。若并没有,那个么第二种方法是使用查询来查找表是否存在。如果这也不起作用,那么在你想做的每一个关卡上试一下接球……2-3不重要,因为现在整个事情都是狗屎:D
if(!_allTablesCollection.keys.Contains("someTable"))
     createTable("someTable");
     update_the_dictionary_with_this_key

//now fire your query