在c#实体框架中用另一个实体更新实体
本文关键字:实体 另一个 更新 框架 | 更新日期: 2023-09-27 18:16:14
我有一堆需要更新的实体,以匹配不同数据库中同一类的实体。例如:
Database1 TableA:
Id| User | FirstName| LastName
1 | Geekguy123 | Fred | Smith
Database2 TableA:
Id| User | FirstName| LastName
34| Geekguy123 | Frederick| Smith
如何为Geekguy123更新database1,使新的FirstName是Frederick?id不同,但User是唯一的。
要清楚,实体上有几十个属性,我不想手动更新。也许SQL会更简单?
只需在数据库1中查询您想要的记录。获取它的FirstName属性,然后查询数据库2中的记录,然后用从数据库1中获得的记录更新FirstName字段。然后提交您的更改。
Db1Context c1 = new Db1Context();
var userToUpdateWith = c1.Users.Single(u => u.User == "Geekguy123")
Db2Context c2 = new Db2Context();
var userToUpdate = c2.Users.Single(u => u.User == "Geekguy123")
由于您需要设置许多属性,因此您可以执行以下操作:
string[] properties = new string[]{"FirstName","LastName"};
foreach(var property in properties){
object value = userToUpdateWith.GetType().GetProperty(property).GetValue(userToUpdateWith, null);
userToUpdate.GetProperty(property).SetValue(userToUpdate, value, null);
c2.SaveChanges();
您可以使用的传递SQL。
如果表名真的 Database1,那么替换Table1
, Table2
。
和传递将是这样的:
<>之前使用(var context = new YourDataContext()){context.Database.ExecuteSqlCommand(是);}原来,实际上有几百个属性。我最终删除并重新添加了具有新值的实体。