我只是发现LINQ并发现它很棒。一个问题是,我必须在3层(层)应用程序的更新期间复制大量字段。我使用的算法显示了一个类的典型LINQ更新。使用反射更新数据库中的许多字段
- 我从表示层收到对象
FromPresentation
。 - 我使用LINQ从数据库中获取具有相同ID的对象。
- 我改变了很多字段
- 保存更改。
而且相应的代码:
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;
}
}
的问题是,我有很多领域。我甚至尝试使用反射(using this question for guidance)来复制字段,但LINQ未被通知更改,因此它不保存任何内容。
如何使用反射将值复制到LINQ对象,以便可以在数据库中进行更新?
您的数据库对象有一个主键声明?使用反射应该可以工作(虽然你最好使用BrokenGlass提到的工具),但除非你声明了主键,否则不会。没有它,就不会生成代码来在数据库对象上进行更新。 –
杰夫,我看不出如何使用Linq。 – Fabio
请参阅:[LINQ不更新.SubmitChanges()](http://stackoverflow.com/questions/206532/linq-not-updating-on-submitchanges)。无论你使用反射还是像automapper这样的工具,如果你的对象没有声明主键,那也无关紧要。 –