2016-08-24 10 views
0

Scaffolding wizardでDevexpressでWPF MVVMプロジェクトを作成しました。作成されたすべてがうまく動作し、グリッドを変更してSaveCommandRowUpdatedと呼びます。MVVM Devexpressプロジェクトにデータをプログラムで保存

今私は新しいレジスタをプログラムで挿入しようとしています。私の戦略は、私のモデルからCollectionViewModelを取得し、そのインスタンスをパラメータとして同じモデルのオブジェクトを送信するSaveメソッドを使用していました。

私はthisのガイドを読んでいましたが、まだ間違っていることが見つかりませんでした。

これはコード

 Transaction transaction = new Transaction(); 
     transaction.IdClient = 1; 

     TransactionCollectionViewModel tcvm = TransactionCollectionViewModel.Create(UnitOfWorkSource.GetUnitOfWorkFactory()); 
     tcvm.Save(transaction); 

であると私はDevExpress社16.1.5を使用していて、プロジェクトが使用している

System.NullReferenceException was unhandled by user code 
    HResult=-2147467261 
    Message=Object reference not set to an instance of an object. 
    Source=DevExpress.Mvvm.v16.1.DataModel 
    StackTrace: 
     at DevExpress.Mvvm.DataModel.RepositoryExtensions.<>c__DisplayClass1_0`3.<GetProjectionPrimaryKey>b__0(TEntity x) 
     at DevExpress.Mvvm.DataModel.RepositoryExtensions.GetProjectionValue[TEntity,TProjection,TEntityResult,TProjectionResult](TProjection value, Func`2 entityFunc, Func`2 projectionFunc) 
     at DevExpress.Mvvm.DataModel.RepositoryExtensions.GetProjectionPrimaryKey[TEntity,TProjection,TPrimaryKey](IRepository`2 repository, TProjection projectionEntity) 
     at DevExpress.Mvvm.DataModel.RepositoryExtensions.FindExistingOrAddNewEntity[TEntity,TProjection,TPrimaryKey](IRepository`2 repository, TProjection projectionEntity, Action`2 applyProjectionPropertiesToEntity) 
     at DevExpress.Mvvm.ViewModel.CollectionViewModelBase`4.Save(TProjection projectionEntity) 
     at Template.ViewModels.ClientCollectionViewModel..ctor(IUnitOfWorkFactory`1 unitOfWorkFactory) in C:\Users\edwin\Source\Workspaces\INVASST\Template\Template\ViewModels\Client\ClientCollectionViewModel.cs:line 37 
     at ClientCollectionViewModel_97cd3897_6fb7_469b_9928_d61260161e61..ctor(IUnitOfWorkFactory`1 unitOfWorkFactory) 
    InnerException: 

Save関数を呼び出すときに、変数tcvmに私は、このエラーが発生しますHybridAppテンプレート

答えて

0

...私の戦略は、インスタンスを取得することでした。モデルからCollectionViewModelを取得し、Saveメソッドを使用して、同じモデルのオブジェクトをパラメータとして送信します。

この戦略は間違っています。対応するCollectionViewModel(グリッドにバインドされている)によって提供されるNew()コマンドを使用する必要があります。 実際の使用状況は、お客様のニーズに応じて異なります。単純なケースでは、グリッドの上にボタンを追加し、このボタンに新規コマンドをバインドするだけです。

関連DXサポートスレッド:Batch Insert/ Edit with Master/Detail

関連する問題