如何查询 returns 一个包含 Servicestack.Ormlite 中两个连接表的值的字典?

How to make a query that returns a dictionary with values from two joined tables in Servicestack.Ormlite?

我有两个 table,卡和用户。 Card 有一个 user 的引用,所以一个用户可以有很多张卡片,但是一张卡片只能有一个用户。 我做了这个 mysql-query that returns the Card.Id and User.LastName:

SELECT Card.Id,User.LastName FROM Card
    left join User on Card.UserId = User.Id
    where Card.Id = '1';

如何使用 servicestack ormlite 进行查询? 我试过这样的事情:

var cardIdAndUserName = db.Dictionary<int, string>(db.From<Card>()
    .LeftJoin<Card, User>((c,u) => c.UserId == u.Id)
    .Select(card => new {card.id, user.Lastname}));

我无法让上面的代码工作,因为 .Select 语句只会让我从 Card table 中获取列。我想我可以用 db.Select(InfoINeedObject) 代替 db.dictionary 调用,但是我必须创建一个新的 class, InfoINeedObject.

有新的 Select 重载允许您指定多个表 added in this commit 现在可以让您这样做:

var cardIdAndUserName = db.Dictionary<int, string>(db.From<Card>()
    .LeftJoin<Card, User>()
    .Select<Card,User>((card,user) => new {card.id, user.Lastname}));

Note: Where joins can be implied it doesn't need to be specified

此更改适用于 v4.0.39+,现在是 available on MyGet