2013-01-16 27 views
1

我可以使用一些關於如何手動更新Breeze版本及其依賴關係的指導。我不相信我只能使用NuGet Package Manager進行更新。如何更新breeze.js庫

我一直在用Breeze,Knockout,WebAPI等開發我的單頁應用程序。我一直在使用Breeze 0.61版本,並希望升級到最新版本,所以我可以利用ODataActionFilters而不必分析Request.QueryString來提取參數和過濾器。例如,當我打電話

 var getMachineById(machineId) { 
      var query = EntityQuery 
      .from("Machines") 
      .where("machineId", "eq", machineId); 

      return manager.executeQuery(query) 
      .then(function (data) { 
       do_something_with(data.results); 
      }) 
      .fail(queryFailed); 
     } 

必須有用於微風處理規定,對我來說,這樣我就可以做這樣的事情:

[AcceptVerbs("GET")] 
    public IQueryable<Machine> Machines() 
    { 
     return _contextProvider.Context.Machines; 
    } 

,而不是

// eg "?$filter=machineId%20eq%205" 
    [AcceptVerbs("GET")] 
    public IQueryable<Machine> Machines() 
    { 
     IQueryable<Machine> x = _contextProvider.Context.Machines; 
     List<ODataQueryString> list = null; 
     string qs = Request.RequestUri.Query.ToString(CultureInfo.CurrentCulture); 
     list = new ODataQueryStringParser(qs).Parse(); 
     if (list != null) 
     { 
      int machineId = int.Parse(list[0].Value); // covert string to an int 
      x = x.Where(o => o.MachineId == machineId); 
     } 

     return x; 
    } 
  1. 我注意到控制器中的屬性修飾在樣本中發生了變化。我是否也需要更換我的?

    namespace PilotPlantBreeze.Controllers 
    { 
        [JsonFormatter, ODataActionFilter] 
        public class BreezeController : ApiController 
        { 
         readonly EFContextProvider<PilotPlantDbContext> _contextProvider = 
         new EFContextProvider<PilotPlantDbContext>(); 
    
         [AcceptVerbs("GET")] 
         public string Metadata() 
         { 
          return _contextProvider.Metadata(); 
         } 
         [AcceptVerbs("POST")] 
         public SaveResult SaveChanges(JObject saveBundle) 
         { 
          return _contextProvider.SaveChanges(saveBundle); 
         } 
    ... etc. 
        } 
    } 
    
  2. 我有我的第三方庫在一個文件夾〜\ Scripts \ lib中。如果我使用NuGet包管理器進行更新,它會將所有替換項放入〜\ Scripts中。如何將文件移動到lib文件夾中而不會搞亂我的Team Foundation Server(Azure)源代碼管理?

  3. Antlr3.Runtime.dll,Breeze.WebApi.dll,Irony.dll,Newtonsoft.Json.dll,WebActivator.dll和版本之間的WebGrease.dll兼容的運行版本。我打賭不是。在Visual Studio中有什麼需要改變的地方嗎?

  4. 我可以只更改packages.config中的包文件夾中的版本條目嗎?

    謝謝。

回答

1

我認爲你最好的辦法是從您的項目中刪除任何現有的微風」的.js'文件和的WebAPI和irony.dlls,然後只需安裝最新的微風NuGet包。安裝nuget包後,您可以繼續將文件移動到項目中的其他位置以匹配其「舊」位置。我也會爲NewtonSoft nuget包做同樣的事情,以防萬一(微風將爲你添加這個)。展望未來,您可以更新到最新的nuget,然後移動這些文件。

當你注意到了,你還需要更換這些屬性

[JsonFormatter,ODataActionFilter]

與此屬性

[BreezeController]

這是假設你沒有運行beta版本的ASP.MVC4。我認爲在其他論壇有帖子討論如何從測試版遷移出去。