由于我正在使用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。