从entry.CurrentValues中提取复杂类型

时间:2013-11-03 21:19:15

标签: entity-framework-5

我的某些域类包含街道地址的复杂类型。 我正在捕获我的更改日志,并希望能够从ObjectStateEntry.CurrentValues

重建地址对象

我的代码详细here

我想从CurrentValues中提取地址,如答案所示。

我可以在调试器的_userObject属性中看到地址,但我不知道如何提取它。

我试过了

var obj = entry.CurrentValues[ordinal];
var rec = (DbDataRecord)obj;

下一步应该是什么?

1 个答案:

答案 0 :(得分:0)

    public static T ConvertTo<T>(this DbDataRecord record)
    {
        T item = Activator.CreateInstance<T>();
        for (int f = 0; f < record.FieldCount; f++)
        {
            var p = item.GetType().GetProperty(record.GetName(f));
            if (p != null && p.PropertyType == record.GetFieldType(f))
            {
                p.SetValue(item, record.GetValue(f), null);
            }
        }

        return item;
    }