我经常看到人们告诉你不应该将实体传递给你的视图。他们说您应该改用 DTO/VO/ViewModel/AnyOtherThingYouWant,因为使用实体会增加耦合。忽略我确实需要一些额外逻辑(或者我不需要所有属性)的时刻,我看不到这样做的任何好处。例如,考虑以下类:
public class Contact {
public int Id { get; set; }
public string Name { get; set; }
public string Email { get; set; }
public string Phone { get; set; }
}
我看到很多创建另一个类的代码,如下所示:
public class ContactDTO {
public int Id { get; set; }
public string Name { get; set; }
public string Email { get; set; }
public string Phone { get; set; }
}
在视图中使用它,然后执行以下操作:
someMapper.Map(contactDto).To<Contact>();
我看不出这比简单地使用 Contact 类有多好,因为您的 View 将耦合到一个耦合到实体类的类。因此,一个中的每一个更改都应该复制到另一个中。从我的角度来看,“中间”对象只是为了增加复杂性,而不是真正的价值。我知道没有“一刀切”的解决方案(有时,使用中间对象会很有意义),但我们真的需要添加这样的代码吗?真正的好处是什么?