#c# #asp.net #sql-server #entity-framework
#c# #asp.net #sql-сервер #entity-framework
Вопрос:
Я использую Sp для создания некоторой логики и возврата объекта таблицы.Если объект не найден, я просто возвращаю значение null объекта
CREATE proc SpDealerDistributionOracle
(
@DealerCode varchar(50),
@imei varchar(50)
)
as
BEGIN
if (some logic)
select top 1 * from tblBarCodeInv
else
select null;
END
Работает нормально..Но когда я написал запрос в EF 6 следующим образом
tblBarCodeInv returnValue = null;
using (var db=new RBSYNERGYEntities())
{
String query = String.Format("SpDealerDistributionOracle 'DealerCode','101001'");
returnValue = db.Database.SqlQuery<tblBarCodeInv>(query).FirstOrDefault();
}
return returnValue;
Он выдает исключение.
Я просто хочу вернуть объект, если он не найден, вернуть значение null и выполнить некоторую логику в C #.Кто-нибудь может помочь??
Комментарии:
1. Но мне нужно использовать Sp.As вы знаете, что Sps предварительно скомпилированы, а функции — нет. Их может быть более 50000 операций в день. Так что лучше использовать sp
2. Проверьте эту ссылку
3. Это полное использование, но не мой вопрос. Я просто возвращаю null, если запись не найдена.. Когда я возвращаю его, он выдает исключение, что требуется RecId (первичный ключ)
Ответ №1:
Измените свою процедуру, чтобы она по-прежнему возвращала «коллекцию» в обоих случаях. Однако во втором случае это будет пустая коллекция и, таким образом, достигнет значения «По умолчанию» для FirstOrDefault
BEGIN
if (some logic)
select top 1 * from tblBarCodeInv
else
SELECT TOP 0 * from tblBarCodeInv
END
Комментарии:
1.
{"The data reader is incompatible with the specified 'RBSYNERGYModel.tblBarCodeInv'. A member of the type, 'RecID', does not have a corresponding column in the data reader with the same name."}
найдено на моей машине2. @syedmhamudulhasanakash — Я рекомендую вам отредактировать свой вопрос, чтобы добавить исходное сообщение об ошибке — это то, что люди будут искать в Google — и именно так ваш вопрос поможет в будущем
3. @syedmhamudulhasanakash — Рад помочь 🙂