本文介绍了从entry.CurrentValues中提取复杂类型的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

Some of my domain classes contain a complex type for a street address.I am capturing a log of my changes, and want to be able to reconstruct the address object from the ObjectStateEntry.CurrentValues

我的代码很详细

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

And I want to extract the address from CurrentValues as the answer suggests.

我可以在调试器的_userObject属性中看到该地址,但是我不知道

I can see the address in the _userObject property in the debugger, but i don't know how to extract it.

我尝试过

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

下一步应该是什么?

推荐答案

    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;
    }

这篇关于从entry.CurrentValues中提取复杂类型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

05-31 02:01