我正在尝试使用我称之为基本linq-to-sql的LINQ-to-SQL解决方案。它不是通过EF或类似的完整ORM解决方案。现在要点是利用LINQ的强大功能并减少存储过程(以及其他一些好处)。
我之前已经与DTO和实体做过一些工作......但这也是一个自定义实现。在该实现中使用了automapper。当知道属性与DTO属性匹配时,我知道automapper“效果最好”。但如果他们不这样做呢?你能以自定义方式配置吗?
我想更大的问题是......这是一个真正的解决方案,因为您无法在查询中实例化“LINQ映射”“实体”。要清楚,你不能使用linq并选择一个新的“实体”,你必须选择一个未映射的DTO。我最终要做的是避免在给定查询中将实体“映射”到DTO。我想这不是什么大不了的事,但像automapper这样的东西解决了这个问题吗?
答案 0 :(得分:0)
我不确定你在问什么,但是:
当知道属性与DTO属性匹配时,我知道automapper“效果最好”。但如果他们不这样做呢?你能以自定义方式配置吗?
如果你问我认为你在问什么,你应该研究.ForMember并覆盖转换功能。维基上有两个例子: .ForMember:https://github.com/AutoMapper/AutoMapper/wiki/Projection 转换:https://github.com/AutoMapper/AutoMapper/wiki/Custom-type-converters
当dtos和实体匹配时,Automapper确实“最佳”工作,因为在两者之间设置地图非常容易,它们的属性名称和类型匹配。当它们不匹配时,您需要使用.ForMember手动选择属性,或者通过覆盖转换函数手动执行整个转换。
我希望这有点帮助。如果不是,或者您需要更多信息,请在下面弹出评论。