处理视图的最佳方式

本文关键字:方式 最佳 视图 处理 | 更新日期: 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之间的区别。