0

単一のエンティティ オブジェクトの NavigationProperty を更新しようとしていますが、SaveChanges 後に更新されません。

オブジェクト エンティティがプロパティを介して UI 要素にバインドされていない場合にのみ機能します。つまり、プロパティを UI にバインドし、navigatio プロパティを変更すると、プロパティは正常に変更されますが、データベースでは更新されません。

バインディングを介してそれを実行しようとする前は、完全に機能していました...

コード:

public TProd_NCMProd ItemAt
    {
        get { return itemAt; }
        set
        {
            itemAt = value;
            OnPropertyChanged(new PropertyChangedEventArgs("ItemAt"));
        }
    }
...
...
...
private void save()
    {
            //ItemAt.TProd_NCMGrupo is my navigation property
            ItemAt.TProd_NCMGrupo = ((TProd_NCMGrupo)cb_ncmGrupo.SelectedItem);

            itemAtBo.update(ItemAt);
            itemAtBo.saveChanges();
    }
...

Update メソッドと Savechanges メソッド (DAO レイヤー):

 public void update(T pEntity)
    {
        entidades.ApplyCurrentValues<T>(pEntity.GetType().Name, pEntity);
    }

 public void saveChanges()
    {
        entidades.SaveChanges();
    }
4

2 に答える 2

1

ナビゲーション エンティティをコンテキストに直接更新する必要があります。item.MyNavObject を更新してから、アイテムをコンテキストに送信しないでください。MyNavObject をコンテキストに送信して更新します。

Unit of Work と Repository パターンは、多くの問題を解決するのに役立ちます。

于 2013-06-21T20:07:04.167 に答える
0

参照を手動で設定する代わりに

ItemAt.TProd_NCMGrupo = ((TProd_NCMGrupo)cb_ncmGrupo.SelectedItem);

コンボボックスを ItemAt->TProd_NCMGrupo のナビゲーション プロパティにバインドするように設定したので、コンボ ボックスの選択を変更すると、ナビゲーション プロパティも変更されます。

Xaml

<combobox ItemsSource="{Binding ItemsCb}" SelectedItem="{Binding Path=ItemAt.TProd_NCMGrupo, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}">
...
</combobx>
于 2013-06-25T12:20:18.170 に答える