Почему параметр out хранимой процедуры не читается методом ExecuteSqlCommand инфраструктуры объектов?

Вы пытались просто добавить еще один Include:

Course course = db.Courses
                .Include(i => i.Modules.Select(s => s.Chapters))
                .Include(i => i.Lab)
                .Single(x => x.Id == id);

Ваше решение не работает, потому что Include не принимает логический оператор

Include(i => i.Modules.Select(s => s.Chapters) &&          i.Lab)
                           ^^^                  ^             ^ 
                          list           bool operator    other list

Update Чтобы узнать подробнее, загрузите LinqPad и просмотрите образцы. Я думаю, что это самый быстрый способ познакомиться с Linq и Lambda.

В начале - разница между Select и Include заключается в том, что с помощью Select вы решили , что вы хотите вернуться (aka projection). Include - это функция Eager Loading , которая сообщает Entity Framework, что вы хотите включить данные из других таблиц.

Синтаксис Include также может быть в строке. Например:

           db.Courses
            .Include("Module.Chapter")
            .Include("Lab")
            .Single(x => x.Id == id);

Но примеры в LinqPad объясняют это лучше.

1
задан azure boy 17 January 2019 в 08:22
поделиться

1 ответ

out параметры в SQL Server забавны. Вы должны повторить себя везде .

В частности, здесь вы забыли упомянуть об этом в списке параметров при вызове хранимого процесса. dbo.InsertPhones @model, @out должно быть dbo.InsertPhones @model, @out out. Также может быть способ пропустить список параметров из этой строки и указать SQL Server, что вы даете ему имя хранимой процедуры, а не произвольный текст запроса, но я не уверен, как вы будете делать это конкретно здесь (с SqlCommand объект, это будет через свойство CommandType).

Если вы используете параметр out, select в конце хранимой процедуры не требуется, но я предполагаю, что это была попытка исправить.

0
ответ дан Damien_The_Unbeliever 17 January 2019 в 08:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: