我只是发现LINQ并发现它很棒。一个问题是,在3层(层)应用程序的更新过程中,我必须复制很多字段。我使用的算法显示了类的典型LINQ更新。
FromPresentation。以及相应的代码:
using (var ctx = new AppDataDataContext())
{
var OBJ =
(from Usu in ctx.usuarios
where Usu.ID == FromPresentation.ID
select Usu).SingleOrDefault();
if (OBJ != null)
{
OBJ.Nome = FromPresentation.Nome;
OBJ.NomeCurto = FromPresentation.NomeCurto;
OBJ.Login = FromPresentation.Login;
OBJ.Senha = FromPresentation.Senha;
OBJ.SuperUsuario = FromPresentation.SuperUsuario;
OBJ.Ativo = FromPresentation.Ativo;
// a lot more fields
ctx.SubmitChanges();
return OBJ.ID;
}
}问题是我有很多领域。我甚至尝试使用反射(用这个问题作指导)复制字段,但是LINQ没有收到更改通知,因此不会保存任何内容。
如何使用反射将值复制到LINQ对象,以便在数据库中更新?
发布于 2011-07-23 16:42:22
您可以尝试更新属性,而不是字段。
例如
private static void UpdateForType(Type type, MyObject source, MyObject destination)
{
var myObjectProperties = type.GetProperties(
BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance);
foreach (PropertyInfo pi in myObjectProperties)
pi.SetValue(destination, pi.GetValue(source, null), null);
} https://stackoverflow.com/questions/6797013
复制相似问题