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