1

我正在尝试为我的模型创建某种动态加载器,我可以在其中指定我需要的属性,它的主要目的是创建一个为单个模型REST API提供动态信息的动态加载器。JSON

API被例如访问 /api/model?id=581D1393-3436-4146-A397-E47CF5419453&fields=foo,bar,baz

为此,我使用了ScottGu's BlogDynamic LINQ中描述的类似方法,问题是我需要使用连接对多个表进行查询并从不同的表中加载数据,据我所知,在这种情况下我不能这样做。

现在我使用ObjectQuery<DbDataRecord>方法Entity SQL来创建我想要的查询,但在这种情况下我失去了编译器验证并且更难重构。

我的问题是,这种问题是否有最佳实践方案?用其他方法实现可能更简单ORM吗?

问候

鲁斯兰 A.

4

1 回答 1

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();
}

如果您查看生成的脚本或结果集,您将得到您想要的。

于 2011-09-25T05:20:14.033 回答