处理视图的最佳方式

时间:2012-02-15 13:57:14

标签: c# visual-studio view

我想以最佳实践开始这个新项目。我有很多表链接在一起。例如:

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
   }
}

必须有一种更有效的方式来更新表格!你知道诀窍吗?

1 个答案:

答案 0 :(得分:1)

我假设你正在使用实体框架。如果您有导航属性,您可以在一次数据库中急切加载对象图,更新字段然后保存。

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。有一个blog post解释了EF和Linq2Sql之间的区别。