急于加载ormlite servicestack

时间:2013-12-17 22:23:51

标签: ormlite-servicestack

这是实体框架:

var department = _context.Departments
                .Include(dep => dep.Employees.Select(emp => emp.ContactTypes))
                .SingleOrDefault(d => d.Id == departmentId);

在这里,我希望返回一个部门,其中包含所有相关员工以及每位员工的所有联系类型。

这是ormlite servicestack:

我不知道。当我查看纪录片/样本时:https://github.com/ServiceStack/ServiceStack.OrmLite

他们写道:

现在,Expression支持可以使用强类型API来满足大多数简单查询。对于任何更复杂的事情(例如,使用表连接的查询),您仍然可以轻松地回退到原始SQL查询,如下所示。

我看到有一个JoinSqlBuilder类,但我认为它不能返回嵌套集合。

也许我想要的是不可能的,但也许我可以做一个妥协,比如让所有员工都参加部门会议。然后我记忆员工并获取某个employeeId的所有联系人类型。创建层次结构并分配列表仍然是我的工作。

但我希望有一个更短的解决方案。

什么也没关系,但查询可能看起来像是返回一个具有3个平面属性的对象(动态?):Department,Employees,ContactTypes并为我的DTO分配thoese属性。

1 个答案:

答案 0 :(得分:0)

好的,请不要把它当作一个明确的答案,但更多的是我对这种情况的看法(我不会非常使用服务堆栈)但是......

当我多年前第一次开始使用EF时,我遇到了类似的情况,其中引用不会加载。和你一样,我面临着自己必须枚举个别收藏的可能性,并为ORM应该能够轻松处理的操作编写了大量额外的代码。

我最终做的是使用自动映射器,它基本上将我到处的所有多行循环减少到单行映射语句。

当然,我仍然必须为每个链接属性执行一个映射语句,但它减少了我必须编写的代码,更重要的是让我启动并运行直到EF改进,或者我找到了更好的处理方式。

让我强调一下,我并不是在提出这个答案,而且评论有点大,我只是建议将你的想法转向另一个方向,这可能有助于更好的解决方案浮出水面。