Да, вы должны объявить в «конструкторе», если хотите, чтобы список стал свойством объекта, а не свойством класса.
Это может быть вызвано запросом LINQ, который пытается выбрать поле, которое фактически не существует в представлении или таблице целевой базы данных.
Один из способов может произойти (что было проблемой в моей case) пренебрегает развертыванием в целевой среде недавно созданной миграции Entity Framework, которая добавляет новое поле к запрашиваемому представлению.
Еще одна вещь, на которую нужно обратить внимание - это внутреннее исключение брошенного EntityCommandExecutionException (as предложенное сообщением об ошибке). В этом случае внутреннее исключение было типа SqlException и имело полезное сообщение Invalid column name ‘[my column name]’
.
Итак, все, на что нужно обратить внимание, когда EntityCommandExecutionException в EntityCommandDefinition.ExecuteStoreCommands возникает при запуске LINQ-to-SQL query:
Это может быть вызвано «Множество наборов активных результатов» отсутствует в соединении String.
Множество наборов активных результатов (MARS) - это функция, которая позволяет выполнять из нескольких партий в одном соединении. В предыдущих версиях только одна партия могла выполняться одновременно с одним соединением. Выполнение нескольких партий с помощью MARS не предполагает одновременного выполнения операций.
blockquote>To Fix:
string connectionString = "Data Source=MSSQL1;" + "Initial Catalog=AdventureWorks;Integrated Security=SSPI;" + "MultipleActiveResultSets=True";
Мне помог доступ к локальному свойству вроде. Исключение:
foreach (var myTableObject in context.Table)
{
// Exception
}
foreach (var myTableObject in context.Table.Local)
{
// No exception
}