我的应用程序中有一个非常简单的存储库模式,但现在我有一个异常情况,我需要返回 Code First 模型和一些额外的数据。见下文。
public IEnumerable<User> GetUsersWithinLocation(DbGeography geography)
我真正想在返回模型中包含的是用户实例和与地理位置的距离(以英里或其他单位)。
以下是我看到的选项:
选项1:我可以返回用户对象列表,没有距离,在前端重新计算第二次,避免弄乱我的数据模型,但似乎有点多余......而且,这在某些情况下可能是不可能的,并且我只是觉得这种做法是错误的。
选项 2:另一个选项是创建一个新的 DTO,该 DTO 由 User 组成或继承 User,例如 UserDistance 对象。这会给我我需要的一切,但我会为此创建一个新的存储库吗?如果每种模型类型返回的数据有很多变化,我可能会认为在大型应用程序中维护这有点不守规矩。
选项 3:实现某种动态的 ExtraData ViewBag 层,我可以在其中任意传入额外数据和 DTO。这将在我的层之间创建更紧密的耦合,因为必须知道名称。我也不是很喜欢这种方法。
非常感谢任何指导。