【发布时间】:2018-11-18 01:34:49
【问题描述】:
两个表:
+-Person-+ +--Rank--+
| Id | | Id |
| FName | | Name |
| LName | +--------+
| Rank |
+--------+
对象模型看起来完全一样,除了 Rank in Person 的类型是 RankModel 而不是 int。
我对它们做了一个简单的内部连接:
string sql = "SELECT pe.Id, pe.LName, pe.FName, pe.Rank, ra.Id, ra.Name" +
"FROM Person pe INNER JOIN Rank ra ON ra.Id = pe.Rank";
然后我用 Dapper 来映射:
return connection.Query<PersonModel, RankModel, PersonModel>(sql, (per, rank) =>
{
per.Rank = rank;
return per;
}).ToList();
但我得到一个例外:
InvalidCastException: Invalid cast from 'System.Int16' to 'MainDB.Models.RankModel'.
显然,它试图将 int 转换为 RankModel,但我不知道为什么 - 它应该将返回分成两个对象,然后将 RankModel 对象附加到 PersonModel 对象的 Rank 属性中。这让我发疯,我已经花了 3 个小时在这上面,但不知道发生了什么。
【问题讨论】: