1

Breeze とその依存関係のバージョン間で手動で更新する方法について、いくつかのガイダンスを使用できます。NuGet Package Manager だけで更新できるとは思えません。

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 の Attribute 装飾が Samples で変更されていることに気付きました。私も変更する必要がありますか?

    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 のパッケージ フォルダーからバージョン エントリを変更することはできますか?

    ありがとう。

4

1 に答える 1

1

あなたの最善のアプローチは、既存のそよ風 '.js' ファイルと webApi および irony.dlls をプロジェクトから削除し、最新のそよ風 nuget パッケージをインストールすることだと思います。nuget パッケージをインストールしたら、ファイルをプロジェクト内の他の場所に移動して、「古い」場所と一致させることができます。念のため、NewtonSoft nuget パッケージについても同じことを行います (そよ風がこれを追加してくれます)。今後は、最新のナゲットに更新してからファイルを移動するだけです。

お気づきのように、これらの属性も置き換える必要があります

[JsonFormatter、ODataActionFilter]

この属性で

【ブリーズコントローラー】

これは、ASP.MVC4 のベータ版を実行していないことを前提としています。ベータ版から移行する方法について議論している他のフォーラムの投稿があると思います。

于 2013-01-16T17:48:53.550 に答える