2015-12-10 2 views
0

Есть ли способ с Database.SqlQuery, чтобы вернуть новый объект?Возврат объекта из базы данных.SqlQuery

С Linq я сделать это таким образом:

Category category 
db.Categories.Add(category); 
db.SaveChanges(); 
return category; 

Теперь категория является объектом, который возвращает новую категорию, созданную с новым идентификатором.

Как это сделать с SqlQuery?

return db.Database.SqlQuery<Category>("INSERT INTO " + categoryTable + " (title,description) VALUES ({0},{1}) ", category.title, category.description); 

Он возвращает пустой массив, но я хочу вернуть новую категорию, созданную с новым идентификатором.

спасибо.

+0

Вы также можете просто поставить: 'db.Database.Log = Debug.WriteLine;' перед тем, как сделать LINQ, и посмотреть, что он генерирует. –

+0

Зачем использовать SqlQuery? Это должно быть возможно с Linq. Пожалуйста, смотрите здесь: http://stackoverflow.com/questions/788320/how-can-i-get-primary-key-value-when-i-insert-a-new-record –

+0

Потому что я не нашел способ с LINQ для использования динамической таблицы. ex: categoryTable. И я хочу избежать использования таких условий, как: if, case и т. Д. – user708683

ответ

1

Я предполагаю, что вам это нужно, потому что Category имеет номер автономера Id. Не проверял это сам, но, возможно, вы можете получить это для работы, используя output clause инструкции insert. например

return db.Database.SqlQuery<Category>("INSERT INTO " + categoryTable + " (title,description) OUTPUT inserted.id, inserted.title, inserted.description VALUES ({0},{1}) ", category.title, category.description); 
+0

Это именно то, что мне нужно! Спасибо :) – user708683

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