Поиск единого субъекта + Риа Сервис - PullRequest
2 голосов
/ 12 ноября 2009

Я читаю и выполняю некоторые RnD на RIA в качестве решения для нового проекта Silverlight.

Я прочитал много документации и решил сделать небольшой макет системы с использованием .Net RIA Services.

Я хочу знать, как получить единую сущность из службы домена?

Пример: Я хочу получить человека и заполнить форму:

 public Person GetSinglePerson()
        {
            return new Person { ID = 4, FirstName = "Cyanide", LastName = "Happiness", Status=3 };

} Скажем, я использую DomainDataSource:

<riaControls:DomainDataSource x:Name="source2" QueryName="GetSinglePersonQuery" AutoLoad="True">
                    <riaControls:DomainDataSource.DomainContext>
                        <web:DataContext/>
                    </riaControls:DomainDataSource.DomainContext>
                </riaControls:DomainDataSource>

Это только возвращает EntityCollectionView? Как связать, например, в форме со свойствами класса Person?

* +1014 * Как:
<TextBox Text="{Binding FirstName, ElementName=source2}"/>

Кажется, все возвращается в виде IEnumerable или CollectionViews (например, привязка DATA в примерах), которые бесполезны для одного объекта.

Мне нужна запись с одним человеком, почему я хочу CollectionView, в котором я не могу получить доступ к свойствам напрямую.

Я также использую:

 LoadOperation<Person> oLoadOperation = oDataContext.Load(oDataContext.GetSinglePersonQuery());

Я очень близок к тому, чтобы отказаться от этой идеи RIA и просто перейти на обычную службу WCF, поскольку на этой стадии она более предсказуема и управляема.

Ответы [ 4 ]

3 голосов
/ 24 июля 2010
ctxt.Load(ctxt.GetEmployeeByNumberQuery("ABC123")).Completed += new System.EventHandler(EmployeeLoad_Completed);


void EmployeeLoad_Completed(object sender, System.EventArgs e)
{
    Employee myEmployee = (sender as LoadOperation<Employee>).Entities.FirstOrDefault();
}
2 голосов
/ 13 ноября 2009

эй только что нашел это проверить это я думаю, это то, что вы хотите сделать

http://jeffhandley.com/archive/2009/11/10/domaindatasource-single-record.aspx

1 голос
/ 10 ноября 2010
        HumanResourceContext context = new HumanResourceContext();

        var addressquery = context.GetAddressesQuery();
        addressquery = addressquery.Where(a => a.AddressId == 1);

        context.Load(addressquery, (op) =>
            {
                Address address = op.Entities.FirstOrDefault();

                MessageBox.Show(address.Street1);
            }, null);
0 голосов
/ 12 ноября 2009

Полагаю, ваш класс украшен [EnableClientAccess]?

попробуй

<TextBlock Text="{Binding Path=Person.FirstName}"
...