将(对象或模型类型X)复制到(对象或模型类型Y)

时间:2014-04-08 08:45:46

标签: c# asp.net-mvc

我的数据库首先使用代码,并使用模型,我只使用数据库的5个属性。这意味着我有一个" Iden_DB.cs"我存储用户的所有信息(代码优先)和" UserProfileModelView.cs"我只使用名称,地址和电子邮件属性。

我已经使这个ModelView获取/更新了View,这就是为什么我没有使用" Iden_DB.cs"作为视图的模型,它是否正确?还有其他办法吗?

另一个问题是,从模型视图中保存信息" UserProfileModelView.cs"使用DB.Entry(XXX)我必须转换" UserProfileModelView.cs"到" Iden_DB.cs"。

我正在使用此功能执行此操作:

    public dynamic mergeViewModel(bool onlyFullyEqual,
                                  dynamic modelOriginalRaw,
                                  dynamic modelNewRaw = null, 
                                  Type typeNewModel = null) 
    {
        bool hasMatch = false;

        if (modelNewRaw.Equals(null))
        {
            if (typeNewModel.Equals(null))
            {
                throw new ArgumentException("Type of the new model is empty");
            }

            modelNewRaw = System.Activator.CreateInstance(typeNewModel);
        }

        foreach (var pi1 in modelOriginalRaw.GetType().GetProperties())
        {             
            var priValue = pi1.GetGetMethod().Invoke(modelOriginalRaw, null);

            foreach (var pi2 in modelNewRaw.GetType().GetProperties())
            {
                if (pi1.Name == pi2.Name)
                {
                    pi2.GetSetMethod().Invoke(modelNewRaw, new object[] { priValue });
                    hasMatch = true;
                    break;
                }
                else
                {
                    hasMatch = false;
                }

            }

            if (!hasMatch && onlyFullyEqual)
            {
                return false;
            }
        }

        return modelNewRaw; }

有没有其他解决方案或我正确做到了?

谢谢你们。

Automapper是另一种选择。

0 个答案:

没有答案