2

我有如下的数据库模型。在这里,我描述了我在 EF 模型中的实体:

   public class Person
   {
      public int Id { get; set; }
      public int AddressId { get; set; }
      public int RoleId { get; set; }
      public string Name { get; set; }
      public string Email { get; set; }
   }

   public class Address
   {
      public int Id { get; set; }
      public int CountryId { get;set; }
      public string City { get; set; }
   }

   public class Role
   {
      public int Id { get; set; }
      public string Name { get; set; }
   }

   public class Country
   {
      public int Id { get; set; }
      public string Name { get; set; }
   }

在前端,我有允许编辑用户信息的管理界面。因此,在每条网格线中,我展示了以下 DTO 对象:

   public class SystemUser
   {
      public string UserName { get; set; }
      public string Email { get; set; }
      public string City { get; set; }
      public string Country { get; set; }
      public string Role { get; set; }
   }

我的主要问题是-在执行编辑后将其映射回实体的最佳方法是什么,我用 AutoMapper 或其他东西取回 DTO?

还是我在这里做一些完全愚蠢的事情?

编辑:我还有另一个挑战:我想尽量减少到数据库的往返次数。

4

1 回答 1

1

我发现AutoMapper创建视图模型等的绝佳选择。保存时,我发现使用带有Save(SystemUser user)最好方法的服务类,因为这样您就有空间控制验证和其他必须完成的事情。用于创建您需要保存的实体的映射代码是手工完成的,因为通常保存中涉及的因素比读取中涉及的因素多得多。因此AutoMapper,这里不是一个很好的选择。我通常用它的构造函数中的各种实体的存储库来编写我的服务类。这更多的是允许您没有提到的单元测试,但无论如何都是一个好的设计。如果这是你需要的那种东西,那么我认为你在正确的轨道上。

于 2013-08-26T14:36:08.220 回答