У меня есть приложение, которое использует Monotouch / C # на Mac в качестве внешнего интерфейса, получая данные из службы WCF в VS2010 на внутреннем интерфейсе.Вчера вечером все работало как сон, прежде чем я ушел, а сегодня я не уверен, что происходит.Все, что я могу видеть, это то, что это исключение, исходящее из Linq Monotouch, и похоже, что я все делаю хорошо, так как я не касался этого куска кода в последние несколько дней.
После того, как яполучить объект GetAllStaffResult
обратно из WCF, я возвращаюсь в основной поток и затем вызываю этот метод Populate()
:
public void Populate()
{
foreach (var m in Staff)
{
m.FranchiseName = this.Franchises.Single(f => f.ID == m.FranchiseID).Name;
}
[snip]
}
Вот трассировка стека:
System.InvalidOperationException: Operation is not valid due to the current state of the object.
at System.Linq.Enumerable.First[FranchiseListingItem] (IEnumerable'1 source, System.Func2 predicate, Fallback fallback) [0x0004a] in /Developer/MonoTouch/Source/mono/mcs/class/System.Core/System.Linq/Enumerable.cs:816
at System.Linq.Enumerbale.First [FranchiseListingItem] (IEnumerable'1 source, System.Func2 predicate) [0x00007] in /Developer/MonoTouch/Source/mono/mcs/class/System.Core/System.Linq/Enumerable.cs:843
at ADMobileServices.BOTransferDTOs.GetAllStaffResult.Populate() [0x0003b] (my code)
Не уверен, что может быть причиной этого ... у кого-нибудь есть идеи?Посмотрим, смогу ли я найти исходные файлы MT, чтобы увидеть эти строки.
О, this
- это GetAllStaffResult
, вышеописанный метод - это частичный класс, который имеет массив сотрудников, франшиз., места.Метод заполнения заполняет каждого сотрудника и заполняет имя франшизы на основе идентификатора франшизы сотрудника.Я делаю это, потому что возвращаюсь, как 500 сотрудников с длинными именами франшизы, и я экономлю полосу пропускания, восстанавливая граф объектов на клиентской стороне.
Поскольку в внешнем ключе есть связьбазы данных, я на 100% уверен, что Single всегда будет возвращать результат.Метод First () также вызвал у меня ту же проблему.
РЕДАКТИРОВАТЬ: трассировка стека для метода First (), который я пробовал после метода Single ().Сейчас я проверяю исходный код, сообщу о своих выводах.