2013-08-15 2 views
0

Я использую службу обслуживания wcf. Я запрашиваю базу данных sql-сервера, чтобы вернуть мне строки из имени таблицы, которое я передаю из графического интерфейса. Случается, что иногда таблица не существует в базе данных, и я использую метод singleorDefault Linq. Поэтому, если в базе данных нет таблицы, она выдает исключение. Как я могу справиться с этим? Мне еще нужно выполнить определенную логику, даже если таблица не найдена. Вот мой кодSingleOrDefault метод исключения метода linq

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

В чем исключение? – sircodesalot

+2

Зачем вам работать против неполной схемы? Это звучит как вещь, чтобы исправить, если честно ... –

+0

@JonSkeet Мне нужно. Нет альтернативы для этого – Happy

ответ

2

Огне этот запрос до и проверьте, если ваша таблица существует или нет.

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

Update

Создайте таблицу с именем, как Table_Existing_In_Your_Schema(name varchar, create_on datetime);

нагрузки этой таблицей в статическом словаре в вашем Global.asax.cs

Dictionary<string, DateTime> _allTablesCollection; 

Writing общего модуль (что-то вроде dal), чтобы запустить все ваши запросы. В этом модуле перед запросом на зажигание

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

//now fire your query 
+0

Я знаю об этом, но есть ли другая альтернатива? – Happy

+0

Исправить ошибку sql и делать то, что вы хотите: D – Anand

+0

'try {...} catch (исключение) {/ * shrug * /}; 'проблема решена. +1 кстати. – sircodesalot

Смежные вопросы