【问题标题】:Best way of handling views处理视图的最佳方式
【发布时间】:2012-02-15 13:57:13
【问题描述】:

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

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

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

【问题讨论】:

  • 无,在这种情况下是一个 DLL。一般的 Winform。

标签: c# visual-studio view


【解决方案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 的区别。

【讨论】:

  • 听起来是视图的不错替代品!感谢您的建议!
猜你喜欢
  • 2013-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-20
  • 2019-10-04
  • 2020-05-14
  • 2011-09-01
相关资源
最近更新 更多