0

a)爲了加載服務器側上的EntityFramework實體的導航屬性我可以使用包括微風** **擴大對的EntityFramework ** **包括用於導航的性質急切裝載

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)微風允許客戶端上加載導航屬性擴大

var navQuery = breeze.EntityQuery.from('MyEntity') 
    .expand('MyNavigationProperty'); 

另見https://breeze.github.io/doc-js/navigation-properties.html

=>如果我想加載導航屬性我應該使用這兩方面的選擇嗎?如果沒有,在服務器或客戶端定義急切加載的導航屬性有什麼優點和缺點?在選擇其中一個選項時,我是否需要考慮性能或安全問題?

是否有可能破解客戶端代碼以檢索比原始代碼加載的更多導航屬性?

這裏有人指出,使用包含或擴大就足夠了:

Breeze does not expand a navigation property

不過,我仍然不確定如何/時使用它們。

回答

0

這似乎是這樣的(請糾正我,或者如果你想添加更多的信息):

一)微風.expand選項默認是啓用的。爲了禁用或限制它的註釋EnableBreezeQuery可以在域控制器可應用於:

[HttpGet] 
[AllowAnonymous] 
[EnableBreezeQuery(MaxExpansionDepth = 0)] 
public IQueryable<Network> NetworkForEntryPageBy() 
{ 
    return _unitOfWork.NetworkRepository.All(); 
} 

這將禁止客戶端使用微風擴大。

另見

https://github.com/Breeze/breeze.server.net/issues/12

https://github.com/Breeze/breeze.server.net/blob/master/Tests/Test.WebApi2.EF6/Controllers/NorthwindIBModelController.cs

https://github.com/IdeaBlade/Breeze/pull/35

b)若微風擴大被啓用,它可以用於覆蓋服務器側包括。例如,我在服務器端添加了「圖片」導航屬性,並在客戶端擴展了「公司」導航屬性。我第一次預計這兩個導航屬性將可用。但是,只有 '公司' 名單中填充在客戶端:


[HttpGet] 
    [AllowAnonymous] 
    [EnableBreezeQuery(MaxExpansionDepth = 10)] 
    public IQueryable<Network> NetworkForEntryPageBy() 
    { 
     return _unitOfWork.NetworkRepository.All().Include('Pictures'); 
    } 

self.networksForEntryPage = function() { 
     var query = breeze.EntityQuery 
      .from(routeconfig.networksForEntryPageUrl).expand('Companies'); 
     return self.executeQuery(query); 
     }; 

=>圖片都是空 =>公司不爲空,可以通過使用客戶端。

相關問題