Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Silverlight, Domain service classes / 5 сообщений из 5, страница 1 из 1
14.01.2010, 19:36
    #36410865
Кант
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Silverlight, Domain service classes
SilverLight приложение, EF, RIA Service, Domain Service Classes.
Все построил как надо. Запрашиваю сущность A, у которой есть ссылки(navigation property) на сущности B и С.
В сервисном классее доработал GetA

public IQueryable<A> GetA()
{
return this.ObjectContext.A.Include("B").Include("C");
}
На клиентской стороне(в SilverLight)
в форме для отображения хочу отобразить в grid коллекцию A и свойства сущностей B и C , на которые он ссылается

типа
<datagrid>
<columns>
<column DataMemberBinding="{Binding name}" />
<column DataMemberBinding="{Binding B.name}" />
<column DataMemberBinding="{Binding C.name}" />
</columns>
</datagrid>

в бехайнде загружаю так
public class AList()
{
public AList()
{
InitializeComponent();

grid.ItemSource=cntx.A;
cntx.Load(cntx.GetAQuery());
}

В профайлере SQL вижу..что выполняется запрос

sel ect a.*,b.*,c.* fr om a left outer join b on a.id=b.a_id и т.д. т.е. все ок все поля необходимые вынимаются

Но я из коллекции A, которую присвоил datagrid.ItemSource выделяю один элемент и смотрю
что у A navigation property B и C ==null! - т.е. не заполнились,и соответственно в гриде отобразить нечего!

В чем дело? Я же проинклудил все refrence enitity - и по профайлингу видно..что запрос выполнился как надо. Может я cntx.Load() - не так использую? Подскажите!



}
...
Рейтинг: 0 / 0
15.01.2010, 01:04
    #36411187
уТКа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Silverlight, Domain service classes
хех, там есть секрет.

при создании DomainService необходимо нажать на флаг "Generate metadata..."
посте генерации имеем два рядом лежащих файла, сам сервис и его metadata.
необходимо зайти в файл metadata и в сущности A коллекций B и C поставить атрибут
Код: plaintext
[Include]
вот тогда сущности "приедут".

по умолчанию все обрезается, видимо из хороших побуждений.

удачи.
...
Рейтинг: 0 / 0
15.01.2010, 01:32
    #36411202
Кант
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Silverlight, Domain service classes
уТКахех, там есть секрет.

при создании DomainService необходимо нажать на флаг "Generate metadata..."
посте генерации имеем два рядом лежащих файла, сам сервис и его metadata.
необходимо зайти в файл metadata и в сущности A коллекций B и C поставить атрибут
Код: plaintext
[Include]
вот тогда сущности "приедут".

по умолчанию все обрезается, видимо из хороших побуждений.

удачи.

Пипец. А мой .Include("B") - для него не указ?
...
Рейтинг: 0 / 0
15.01.2010, 01:45
    #36411205
Кант
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Silverlight, Domain service classes
уТКахех, там есть секрет.

при создании DomainService необходимо нажать на флаг "Generate metadata..."
посте генерации имеем два рядом лежащих файла, сам сервис и его metadata.
необходимо зайти в файл metadata и в сущности A коллекций B и C поставить атрибут
Код: plaintext
[Include]
вот тогда сущности "приедут".

по умолчанию все обрезается, видимо из хороших побуждений.

удачи.

Спешу огорчить - не помогло..
зашел в метакласс..там хитрая конструкция

[MetadataTypeAttribute(typeof(A.AMetadata))]
public partial class A
{
internal sealed class ProjectMetadata
{

// Metadata classes are not meant to be instantiated.
private AMetadata()
{
}
[Include]
public B B;
[Include]
public C C;

Не помогло..на клиентской стороне после GetAQuery() - в сущности A снова B и C ==null Хрень какая-то....
...
Рейтинг: 0 / 0
15.01.2010, 01:56
    #36411211
Кант
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Silverlight, Domain service classes
уТКахех, там есть секрет.

при создании DomainService необходимо нажать на флаг "Generate metadata..."
посте генерации имеем два рядом лежащих файла, сам сервис и его metadata.
необходимо зайти в файл metadata и в сущности A коллекций B и C поставить атрибут
Код: plaintext
[Include]
вот тогда сущности "приедут".

по умолчанию все обрезается, видимо из хороших побуждений.

удачи.

Дико извиняюсь! Сработало. Я просто подумал, что Вы советуете убрать .Include("B").Include("C) из запроса и включить атрибут Include ..оставил и атрибут и операторы включения - приехало!) И Вам удачи!
...
Рейтинг: 0 / 0
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Silverlight, Domain service classes / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]