【问题标题】:Update/Edit entity with relations使用关系更新/编辑实体
【发布时间】:2019-11-11 01:03:13
【问题描述】:

我在 MVC 中工作并创建 som CRUD 操作。我不是专业人士,我在更新/编辑实体时遇到问题,当实体有关系时,我也想更新。以下是表格的简短说明:

我有一个名为“User”的模型,具有以下属性(userId 等....) 我有一个名为“Address”的模型,具有以下属性(addressId、街道、邮政编码、城市)

我有一个名为“Home”的模型,它具有以下属性(StreetNumber、floor、side 和两个导航属性“userid”和“addressId”)。

现在.. 我有一个带有 Address 和 Home 属性的 viewModel.. 我想使用这个 viewModel 更新两者。我没有在我的视图中显示所有数据的问题。但我不能同时更新两个实体?

谁能举例说明如何做到这一点? 我可以通过 home 模型更新地址模型吗?

【问题讨论】:

  • 欢迎来到 Stack Overflow!分享您的代码,请查看how-to-ask 以帮助您提出一个好问题,从而得到一个好的答案。

标签: c# asp.net-mvc


【解决方案1】:

如果你发布了一些代码会更容易,但我会假设你有什么。

首先,我会更新您的视图模型并包含用户的id

public class UserViewModel
{
  public Guid Id {get;set;}
  public string Name {get;set;}
  public string Surname {get;set;}
  public string City {get;set;}
  public string Address {get;set;}
}

然后您只需要将 ViewModel 的属性映射到模型的属性。由于您提到您有一些导航属性,因此应该不难找到您要更新的用户的地址。

  public void Update(UserViewModel userVM)
  {
      var user = db.Users.Find(userVM.Id);
      if(user != null)
      {
        user.Name = userVM.Name;
        user.Surname = userVM.Surname;

        var address = user.Address;
        address.City = userVM.City;
        address.Address = userVM.Address;

        db.SaveChanges();
      }
    }

我想你现在应该明白了。

如果您没有导航属性,只需将地址的id 包含到您的视图模型中,这样您就可以像我为用户所做的那样找到它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-07
    • 1970-01-01
    • 1970-01-01
    • 2013-08-23
    相关资源
    最近更新 更多