Ошибка "Bad key member" в Linq to SQL
До сей поры радующий меня Orcas таки показал свои зубки
. 2 часа были посвящены шаманским танцам с бубном вокруг чудесной ошибки "Bad key member: 0: User.UserId in [UserId]", но шаманство таки помогло и я смог побороть ситуацию
. Да и решение оказалось воистину простым...
Вообщем рассказываю по порядку. Есть схема из N различных связанных друг с другом таблиц. В дизайнере быстренько сгенерил классы для них, скомпилил на ура, пишу простейший тест на селект из одной таблицы - проходит на ура. Делаю селект из другой таблицы - и получаю в лоб вышеприведенную ошибку. Начинаю смотреть глубже и обнаруживаю, что все таблицы кромеэтой работают на ура, а любое обращение к классу "поломанной" таблицы дает ошибку. Пошел как нормальный человек гуглить, но по теме нашел аж 2 поста на MSDN-овсих форумах. Напрямую они не помогли, правда локализовали проблему - ошибка случается в случае проблем с настройками связей. И действительно - убираю из класса все ссылки на друие классы и все начинает работать, возвращаю ссылки назад - валится вусмерть. Мучался долго, действовал уже по принципу "а попробуем еще вот так, вдруг чего выйдет?" и таки нашел решение
. Оказывается у меня в одной таблице имя поля было задано как UserId, а в другой (в других вернее) - как UserID. Уж не знаю, если честно, что именно жить DLinq-у мешало, но исправление всех имен на UserID в соотв. атрибутах Association как в главной, так и в подчиненных таблицах таки помогло
.