C# 如何在不手动设置每个属性的情况下更新数据库中的实体对象?
我正在使用实体框架更新数据库表,但手动设置每个属性C# 如何在不手动设置每个属性的情况下更新数据库中的实体对象?,c#,entity-framework-4,C#,Entity Framework 4,我正在使用实体框架更新数据库表,但手动设置每个属性 using (BmEntities b = new BmEntities()) { var curUser = b.Distributor.Where(k => k.ID == updated.ID).First(); curUser.UserEmail = updated.UserEmail; curUser.UserName = updated
using (BmEntities b = new BmEntities())
{
var curUser = b.Distributor.Where(k => k.ID == updated.ID).First();
curUser.UserEmail = updated.UserEmail;
curUser.UserName = updated.UserName;
curUser.UserAdres = updated.UserAdres;
curUser.UserLast = updated.UserLast;
curUser.Pass = updated.Pass; //these properties goes too much
b.SaveChanges();
}
你能给我举个简单的例子来代替上面的吗?
如果这些属性变为20-30,我该怎么办?我的朋友告诉我一些关于AutoMapper的事情,但我找不到像我这样的简单例子我从另一个论坛找到了一个扩展方法,它解决了AutoMapper没有的问题
public static class ReflectionExtensions
{
public static void CopyPropertiesFrom(this object destObject, object sourceObject)
{
if (null == destObject)
throw new ArgumentNullException("destObject");
if (null == sourceObject)
throw new ArgumentNullException("sourceObject");
Type destObjectType = destObject.GetType();
foreach (PropertyInfo sourcePi in sourceObject.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public))
{
PropertyInfo destPi = destObjectType.GetProperty(sourcePi.Name);
if (null != destPi && null != destPi.SetMethod)
{
object sourcePropertyValue = sourcePi.GetValue(sourceObject);
destPi.SetValue(destObject, sourcePropertyValue);
}
}
}
}
使用此扩展方法,我现在可以从给定对象一次复制所有属性
public static void Update_User(Distributor updated)
{
using (BmEntities b = new BmEntities())
{
var curUser = b.Distributor.Where(k => k.ID == updated.ID).First();
curUser.CopyPropertiesFrom(updated);
b.SaveChanges();
}
}