【发布时间】:2017-05-04 11:09:29
【问题描述】:
a) 为了在 server 端使用 EntityFramework 加载实体的导航属性,我可以使用 include:
public virtual IQueryable<TEntity> All(){
IQueryable<TEntity> initialQuery = Context.Set<TEntity>();
IQueryable<TEntity> extendedQuery = initialQuery.Include('MyNavigationProperty');
return extendedQuery;
}
另见https://msdn.microsoft.com/en-us/magazine/hh205756.aspx
b) Breeze 允许使用 expand 在 client 端加载导航属性:
var navQuery = breeze.EntityQuery.from('MyEntity')
.expand('MyNavigationProperty');
另见https://breeze.github.io/doc-js/navigation-properties.html
=> 如果我想加载导航属性,我应该同时使用这两个选项吗?如果不是,那么在服务器端或客户端定义急切加载的导航属性的优缺点是什么?选择其中一个选项时,是否需要考虑性能或安全问题?
例如,是否可以破解客户端代码以检索比原始代码加载的更多导航属性?
这里有人说使用 include 或 expand 就足够了:
Breeze does not expand a navigation property
但是,我仍然不确定如何/何时使用它们。
【问题讨论】:
标签: javascript c# entity-framework breeze navigation-properties