0

我正在尝试将数据库实体(EntityFramework 4.1)映射到 ViewModel(MVMMLight 框架)。在 VM 中为每个数据库字段创建属性就可以完成这项工作,但是感觉不太对,并且在稍后我们讨论映射 46 个数据库表时很难维护。示例代码:

public const string MyPropertyPropertyName = "MyProperty";

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

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

其中_objectEntityObject一个 ViewModel 的指定类型的存储。

我正在考虑使用这样的动态属性

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