У меня была программа DataBinding, которая, на мой взгляд, является довольно распространенным явлением, но я не могу найти кого-либо с подобной проблемой - что заставляет меня думать, что я что-то упускаю ..
Короче говоря, после сохранения новой родительской сущности родительская сущность не может ссылаться на EntityRef во время операций привязки и ссылаться на атрибуты связанной сущности….вот подробности ...
У меня есть иерархическая структура, которая выглядит следующим образом: Организация имеет одного или нескольких Представителей, где каждый Представитель является Лицом, каждый Лицо имеет ноль или более телефонных номеров.
Таким образом, Организация - >> Представитель-> Персона - >> Телефонные номера.
Я использую поле списка, чтобы отобразить список представителей слева, а справа отображается подробная информация для представителя, которыйвыбран.Я использовал выбранный элемент в ListBox в качестве источника для сетки, отображающей информацию о персоне.
Я использую службы WCF RIA, поэтому у меня есть объект Entity с именем Organization, который содержит коллекцию представителей EntitySet,который я использую в качестве источника элементов для привязки к списку.
Внутри каждого представителя есть объект Person, который ведет меня к имени и фамилии человека (внутренне это то место, куда вступает EntityRef).
В окне Представитель яхотел бы показать название представителя, а также связанные с ним имя и фамилию (которая находится на соответствующем юридическом лице).Таким образом, список будет содержать что-то вроде этого:
Название Имя Фамилия Районный менеджер Билл Смит Региональный менеджер Джон Доу
XAML выглядит так:
<ListBox>
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="{Binding ContactTitle}" Margin="5"/>
<TextBlock Grid.Column="1" Text="{Binding Path=Person.FirstName, Mode=OneWay, FallbackValue='New Representative'}" Margin="5"/>
<TextBlock Grid.Column="2" Text="{Binding Path=Person.LastName, Mode=OneWay, FallbackValue='New Representative'}" Margin="5"/>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
КогдаЯ создаю нового представителя, я также создаю новую запись персоны и немедленно связываю новую персону с представителем, а представителя с организацией.
Все прекрасно работает, пока я не сохраню DomainContext.Когда я отправляю изменения обратно через RIA Services, я прослеживаю все это через Submit, и он обновляет DB, работает отлично.Представленные результаты, которые возвращаются после завершения операции отправки, также выглядят хорошо.
Я подтвердил, что Org, Rep и Person все правильно связаны в клиентском приложении.
YET, когда я возвращаюсь в список, и имя, и фамилияЧеловек ПОТЕРЯЛ!Я потратил часы и часы (фактически дни), пытаясь определить причину, но, похоже, не могу найти способ отследить, что происходит между Submitcallback и возвращением на экран.
В своей отладке я добавил обработчик события SelectionChanged и добавил точку останова.Когда я щелкаю по новой сохраненной строке и смотрю на Персона - она не равна нулю и содержит правильные данные - но в списке отображается атрибут FallBack.
Почему привязка данных получает ноль послеОперация отправки завершена, но она есть, когда я достигаю точки останова при изменении выбора.Я уверен, что это проблема времени - но, безусловно, это требование было выполнено раньше!