如何查询 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。
我有两个 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。