处理视图的最佳方式
本文关键字:方式 最佳 视图 处理 | 更新日期: 2023-09-27 18:24:36
我想以最佳实践开始这个新项目。我有很多表是连在一起的。示例:
Person
- ID
- FirstName
- LastName
User
- ID
- PersonID
- AddressID
Address
- ID
- Line1
- Line2
显然,为了在应用程序中提高效率,我必须使用UserView
视图。这个视图将把这三张桌子放在一起。
现在,当有人对用户进行更改时,我必须分别查询所有三个表,进行更改,然后更新。
private void updateUser(UserView userView)
{
using (var context = getNewContext()
{
var person = context.Person.first(c => c.ID == userView.PersonID)
person.FirstName = userView.FirstName;
person.LastName = userView.LastName;
context.SaveChanges();
var user = context.User.first(c => c.ID == userView.UserID)
//and so on for the 3 tables
}
}
必须有一种更有效的方法来更新表!你知道什么把戏吗?
我假设您使用的是实体框架。如果你有导航属性,你可以在一次数据库访问中急切地加载你的对象图,更新字段,然后保存它
var user = context.User.Include("Person").Include("Address").First(c => c.ID == userView.UserID);
user.Person.FirstName = userView.FirstName;
user.Person.LastName = userView.LastName;
user.Address... // etc.
如果您使用的是Linq2Sql,则必须使用DataLoadOptions。有一篇博客文章解释了EF和Linq2Sql之间的区别。