我只是發現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這樣的工具,如果你的對象沒有聲明主鍵,那也無關緊要。 –