Как обновить библиотеку breeze.js

Я мог бы использовать некоторые рекомендации о том, как вручную обновлять версии 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. У меня есть сторонние библиотеки в папке ~\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?

    Спасибо.


person bizcad    schedule 16.01.2013    source источник


Ответы (1)


Я думаю, что лучшим подходом будет удаление всех существующих файлов breeze '.js', а также webApi и irony.dll из вашего проекта, а затем просто установка последнего пакета breeze nuget. После установки пакета nuget вы можете продолжить и переместить файлы в другие места в проекте, чтобы они соответствовали их «старым» местоположениям. Я бы сделал то же самое и для пакета NewtonSoft nuget, на всякий случай (breeze добавит это для вас). В дальнейшем вы можете просто обновиться до последней версии nuget, а затем переместить файлы.

Как вы заметили, вам также нужно будет заменить эти атрибуты

[JsonFormatter, ODataActionFilter]

с этим атрибутом

[Контроллер ветра]

Это предполагает, что вы не используете бета-версию ASP.MVC4. Я думаю, что на других форумах есть сообщения, в которых обсуждается, как перейти от бета-версии.

person Jay Traband    schedule 16.01.2013