如何更新breeze.js库

时间:2013-01-16 03:55:33

标签: breeze

我可以使用一些指导,了解如何在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. 我注意到Controller中的属性修饰在示例中已更改。我也需要改变我的吗?

    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中。如何在不弄乱我的Team Foundation Server(Azure)源代码控制的情况下将文件移动到lib文件夹中?

  3. Antlr3.Runtime.dll,Breeze.WebApi.dll,Irony.dll,Newtonsoft.Json.dll,WebActivator.dll以及版本之间的WebGrease.dll的运行时版本是否兼容。我打赌不是。我是否需要在Visual Studio中进行更改?

  4. 我可以从packages.config中的包文件夹中更改版本条目吗?

    感谢。

1 个答案:

答案 0 :(得分:1)

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

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

[JsonFormatter,ODataActionFilter]

使用此属性

[BreezeController]

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