将dto映射到实体?也许是自动映射器?属性应该匹配吗?linq选择



我正试图使用我将称之为基本LINQ-to-SQL的东西来创建一个LINQ-to-SQL解决方案。这不是一个完整的ORM解决方案通过EF或类似的东西。现在的重点是利用LINQ的强大功能,减少存储过程(以及其他一些好处)。

我以前与DTO和实体做过一些工作。。。但这也是一个自定义实现。在该实现中使用了automapper。我知道当实体属性与DTO属性匹配时,自动映射器"效果最好"。但如果他们不这样做呢?你能以自定义的方式配置它吗?

我想一个更大的问题是……对于不能在查询中实例化"LINQ映射"实体"的事实,这是一个真正的解决方案吗。要明确的是,您不能使用linq并选择一个新的"实体",您必须选择一个未映射的DTO。我最终要做的是避免将实体"映射"到给定查询中的DTO。我想这没什么大不了的,但像automapper这样的东西能解决这个问题吗?

我不太确定你在问什么,但:

我知道当实体属性与DTO属性匹配时,自动映射器"效果最好"。但如果他们不这样做呢?你能以自定义的方式配置它吗?

如果你在问我认为你在问什么,你应该调查.ForMember并覆盖Convert函数。维基上有这两者的例子:.会员:https://github.com/AutoMapper/AutoMapper/wiki/Projection转换:https://github.com/AutoMapper/AutoMapper/wiki/Custom-type-converters

当dto和实体匹配时,Automapper的工作效果"最好",因为如果它们的属性名称和类型匹配,那么在两者之间设置映射就非常容易。当它们不匹配时,您需要使用.ForMember手动选择属性,或者通过覆盖Convert函数手动进行整个转换。

我希望这有点帮助。如果不是,或者你需要更多信息,请在下面发表评论。

最新更新