【发布时间】:2019-12-20 20:32:45
【问题描述】:
我有两个 SQL 表:Teams 和 Members。每个团队包含 3 名成员,在数据库中存储成员的 ID。
如何使用 Dapper.NET ORM 将成员对象映射到团队中?
public class Team
{
public int? id { get; set; }
public Member MemberA { get; set; }
public Member MemberB { get; set; }
public Member MemberC { get; set; }
}
public class Member
{
public int? id { get; set; }
public string Name { get; set; }
}
public IEnumerable<Team> GetTeams()
{
string sql = "SELECT * FROM Teams t LEFT JOIN Members m ON t.MemberA=m.id AND t.MemberB=m.id AND t.MemberC=m.id";
return m_connection.Query<Team, Member, Member, Member, Team>(sql, (t, m1, m2, m3) =>
{
t.MemberA = m1;
t.MemberB = m2;
t.MemberC = m3;
return t;
}, splitOn: "MemberA,MemberB,MemberC");
}
【问题讨论】:
-
你的团队不应该有
List<Member>吗? -
这更像是一个 Sql 语法问题,而不是 Dapper 问题
-
@stuartd 不,这不是一对多的关系。