【发布时间】:2019-05-27 08:30:46
【问题描述】:
最近发现了AutoMapper的ProjectTo<>方法,所以一直在玩弄。
到目前为止一切顺利,直到我遇到一个具有多个相同类型属性的类,例如:
public class RandomDto
{
public int Id {get;set;}
public ChildDto FirstChild {get;set;}
public ChildDto SecondChild {get;set;}
}
它似乎为单个子关系生成 SQL,而不是为两者生成 SQL:
SELECT CASE
WHEN [dtoRandom].[FirstChild_FK] IS NULL
THEN CAST(1 AS BIT) ELSE CAST(0 AS BIT)
END, [t0].[Child_Description]
END, [dtoRandom].[Id]
FROM [Randoms] AS [dtoRandom]
INNER JOIN (
SELECT [s].*
FROM [Childs] AS [s]
) AS [t0] ON [dtoRandom].[FirstChild_FK] = [t0].[Id]
我试过了
.ProjectTo<RandomDto>(null, "FirstChild", "SecondChild")
.ProjectTo<RandomDto>(x=>x.FirstChild, x=>x.SecondChild)
两者都返回,第一个被填写,第二个为空
不确定我是否需要设置自定义别名或其他东西才能使其正常工作?
【问题讨论】:
-
尝试将其编写为 LINQ 查询,不使用 AM。
-
我遇到了同样的问题。如果我取出具有相同类型的属性之一,它会起作用。这听起来像是 Auto Mapper 中的一个错误(目前我使用的是 v9.0.0),虽然我试图在一个更简单的测试应用程序上模拟这个问题,但它没有发生。显然,不仅仅是拥有两个或多个相同类型的属性。
标签: c# automapper