0

mvvm パターンで使用するために、wpf で EF の以下のクラスを定義しました。

public class ProductGroup : ViewModelBase
{

    public long ID { get; set; }

    private string _Title;
    public string Title
    {
        get { return _Title; }
        set
        {
            if (_Title != value)
            {
                _Title = value;
                this.RaisePropertyChanged("Title");
            }
        }
    }

    private byte[] _Icon;
    public byte[] Icon
    {
        get { return _Icon; }
        set
        {
            if (_Icon != value)
            {
                _Icon = value;
                this.RaisePropertyChanged("Icon");
            }
        }
    }

    private ProductGroup _Parent;
    public ProductGroup Parent
    {
        get { return _Parent; }
        set
        {
            if (_Parent != value)
            {
                _Parent = value;
                this.RaisePropertyChanged("Parent");
            }
        }
    }

    private ObservableCollection<ProductGroup> _Childs;
    public ObservableCollection<ProductGroup> Childs
    {
        get { return _Childs; }
        set
        {
            if (_Childs != value)
            {
                _Childs = value;
                this.RaisePropertyChanged("Childs");
            }
        }
    }

    private ObservableCollection<Product> _Products;
    public ObservableCollection<Product> Products
    {
        get { return _Products; }
        set
        {
            if (_Products != value)
            {
                _Products = value;
                this.RaisePropertyChanged("Products");
            }
        }
    }

}

public class Product : ViewModelBase
{
    public long ID { get; set; }

    private ProductGroup _Gorup;
    public ProductGroup Gorup
    {
        get { return _Gorup; }
        set
        {
            if (_Gorup != value)
            {
                _Gorup = value;
                this.RaisePropertyChanged("Gorup");
            }
        }
    }

    private string _Name;
    public string Name
    {
        get { return _Name; }
        set
        {
            if (_Name != value)
            {
                _Name = value;
                this.RaisePropertyChanged("Name");
            }
        }
    }

}
  • 私の定義は正しいですか??
  • ProductGroups から項目を削除したい場合、次のエラーが発生します。

リレーションシップの外部キー プロパティを公開しないエンティティの保存中にエラーが発生しました。1 つのエンティティを例外のソースとして識別できないため、EntityEntries プロパティは null を返します。保存中の例外の処理は、エンティティ タイプで外部キー プロパティを公開することで簡単に行うことができます。詳細については、InnerException を参照してください。

ノート:

  • 対象の ProductGroup は別の ProductGroup の子です

  • 対象の ProductGroup に子と製品がありません

4

0 に答える 0