我正在尝试为我的模型创建一种动态加载器,我可以指定我需要哪些属性,其主要目的是创建一个REST API
,它提供动态信息JSON
个别模特。
API
将由例如/api/model?id=581D1393-3436-4146-A397-E47CF5419453&fields=foo,bar,baz
访问
ObjectQuery<DbDataRecord>
为此,我使用Dynamic LINQ
中描述的ScottGu's Blog,问题是我需要对多个表进行查询,并使用连接并从不同的表加载数据,这是我不能做的在这种情况下,据我所知。
现在我使用Entity SQL
方法ORM
,我可以创建一个查询,但是在这种情况下,我失去了编译器验证,并且更难以重构。
我的问题是,是否存在针对此类问题的最佳实践方案?用其他{{1}}来实现它可能更简单吗?
问候
Russlan A。
答案 0 :(得分:0)
实际上我认为你可以做到,尽管你认为你做不到。我这样说是因为装载了懒散。
using(var someContext = new SomeContextEntities())
{
var data = someContext.Entity;
foreach(var kvp in queries)
{
switch(kvp.Key)
{
case "q1":
var val = kvp[kvp.Key];
data = data.Where(q => q.q1 == val);
break;
case "q2":
var val2 = kvp[kvp.Key];
data = data.Where(q => q.q2 == val2);
break;
case "q3":
var val3 = kvp[kvp.Key];
data = data.Where(q => q.q1.q3 == val3);
...
}
}
return data.ToList();
}
如果查看生成的脚本或结果集,您将获得所需的内容。