我的数据库首先使用代码,并使用模型,我只使用数据库的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是另一种选择。