延迟加载与单独加载外键的每个属性

时间:2015-05-16 15:23:43

标签: c# linq entity-framework linq-to-sql entity-framework-6

由于我正在使用Entity Framework 6 Database First并且我的数据库已设置了所有关系,因此我的EDMX auto会为我生成导航属性,无论它们是对象列表还是单个对象。这样我可以使用.Include(x => x.NavProperty)延迟加载。

如何使用之前在存储过程中执行的延迟加载来处理以下内容,该存储过程将返回具有名为MaterialDescription的字符串属性的OrderDetailDto列表?

$query->setParameter(1, $user->getUsernameCanonical());

我真的试图避免这样做,但我可能最终忽略导航属性中的所有构建并为每个实体创建一个Dto并严格添加我想要绑定的属性。然后选择如下:

SELECT od.*, IIF(m.Description is null, od.Description, m.description) as MaterialDescription
FROM OrderDetail od
LEFT OUTER JOIN Material m ON od.MaterialId = m.Id

请给我任何有关如何避免的建议。我想避免创建Dtos并简单地将自动生成的EF类与虚拟属性一起使用,但似乎存在限制和性能差异。我将无法使用左外连接执行If语句。

我不知道这是否是正确的术语,但我相信我想要的仍然是使用Flattened对象,但不必创建Dtos。

0 个答案:

没有答案