0

データベース エンティティ (EntityFramework 4.1) を ViewModel (MVMMLight Framework) にマップしようとしています。すべてのデータベース フィールドに対して VM でプロパティを作成することはうまくいきますが、それは適切ではなく、後で 46 のデータベース テーブルのマッピングについて説明するときに維持するのが難しくなります。コード例:

public const string MyPropertyPropertyName = "MyProperty";

public string MyProperty
{
    get
    {
        return _object.MyProperty;
    }

    set
    {
        if (_object.MyProperty != value)
        {
            _object.MyProperty = value;
            RaisePropertyChanged(MyPropertyPropertyName);
        }             
    }
}

ここで、ViewModel の指定された型の_objectストアドです。EntityObject

このような動的プロパティを使用することを考えていました

public object this[string propertyName]
{
    get
    {
        System.Reflection.PropertyInfo property = _object.GetType().GetProperty(propertyName);
        if (property == null)
            return null;

        return property.GetValue(_object, null);
    }
}

しかし、それをバインドすると{Binding MyProperty}結果がBindingExpression path error: 'MyProperty' property not foundになるので、正しい方法ではないようです。

自分のクラスで未定義のプロパティを処理する方法はありますか? 私はそれが仕事をすると思います。多分私はマッピングでこのすべてを過剰に操作しようとしているのかもしれません. はいの場合、知りたいです。

4

0 に答える 0