【问题标题】:How to update breeze.js library如何更新微风.js 库
【发布时间】:2013-01-16 03:55:33
【问题描述】:

我可以使用一些关于如何在 Breeze 版本及其依赖项之间手动更新的指导。我不相信我可以只使用 NuGet 包管理器进行更新。

我一直在使用 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);
       }

Breeze 必须有办法为我处理这个问题,所以我可以这样做:

    [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. 我的第 3 方库位于文件夹 ~\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 中包文件夹中的版本条目吗?

    谢谢。

【问题讨论】:

    标签: breeze


    【解决方案1】:

    我认为您最好的方法是从您的项目中删除任何现有的轻风“.js”文件以及 webApi 和 irony.dll,然后简单地安装最新的轻风 nuget 包。安装 nuget 包后,您可以继续将文件移动到项目中的其他位置以匹配它们的“旧”位置。我也会为 NewtonSoft nuget 包做同样的事情,以防万一(微风会为你添加这个)。今后,您只需更新到最新的 nuget,然后移动文件即可。

    正如您所注意到的,您还需要替换这些属性

    [JsonFormatter, ODataActionFilter]

    有这个属性

    [微风控制器]

    这假设您运行的不是 ASP.MVC4 的测试版。我认为其他论坛中有一些帖子讨论了如何从测试版迁移出去。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-18
      • 2021-05-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多