是否有办法急切加载查询中提取的实体的子集合,而不必在string
方法中将集合的路径指定为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
放在.Expand
方法中,或者只是为了避免在我的代码中由于编译器脆弱性而无法创建复制/粘贴的反射?
答案 0 :(得分:0)
我目前唯一的解决方案是使用反射来构建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
方法是来自Jared Par on SO的IsSubclassOfRawGeneric
方法的包装器