Стремительная загрузка свойств коллекции во время выполнения запроса - PullRequest
0 голосов
/ 08 октября 2010

Есть ли способ нетерпеливо загрузить дочерние коллекции сущностей, выбранных в запросе, без необходимости указывать пути коллекций как string s в методе Expand?

В настоящее время у меня естьследующее:

    foo_entities ctx = new foo_entities(new Uri("http://url/FooService.svc/"));
    ctx.MergeOption = MergeOption.AppendOnly;        
    var things = ctx.Things
                .Expand("ChildCollectionProperty1," +
                        "..." + 
                        "ChildCollectionPropertyN");
    foreach (var item in things)
    {
        foreach (var child in item.ChildCollectionProperty1)
        {
            //do thing
        }
    }  

Есть ли какой-нибудь способ избежать ввода string s в метод .Expand, или это единственное, что я могу сделать, это избежать копирования / вставки, не проверяемой хрупкостью компилятора в моем коде?

1 Ответ

0 голосов
/ 08 октября 2010

Мое единственное текущее решение использует отражение для построения string или путей для метода .Expand.

foo_entitiesctx = new foo_entities(new Uri("http://url/FooService.svc/"));
ctx.MergeOption = MergeOption.AppendOnly;

var collections = from pi in typeof(TestResult).GetProperties()
                   where IsSubclassOfRawGenericCollection(pi.PropertyType)
                   select pi.Name;

var things = ctx.Things.Expand(string.Join(",", collections));
foreach (var item in things)
{
    foreach (var child in item.ChildCollectionProperty1)
    {
        //do thing
    }
}  

(Метод IsSubclassOfRawGenericCollection является оберткой для метода IsSubclassOfRawGeneric из Джаред Пар на SO )

...