我是一个有用的助手,可以为您翻译文本。
我已经创建了一个包含我正在尝试做的完整示例的存储库。
我的架构如下:
我已经创建了一个包含我正在尝试做的完整示例的存储库。
我的架构如下:
class Order
{
public int OrderId { get; set; }
}
class LineItem
{
public int LineItemId { get; set; }
public int OrderId { get; set; }
}
我正在使用ServiceStack.OrmLite进行订单与LineItem的左连接,使用以下代码:
var query = db.From<Order>()
.LeftJoin<LineItem>()
.Where(o => o.OrderId == 1);
var results = db.SelectMulti<Order, LineItem>(query);
SelectMulti()
返回一个 List<Tuple<Order, LineItem>>
。当订单没有行项目时,我得到的是 new LineItem()
而不是 null
。
我希望得到 null
,这样我就可以区分“此订单不存在行项目”和“此订单有一个具有默认值的行项目”。
我可以检查行项目的 OrderId
是否等于订单的 OrderId
,但理论上我可能有一个 OrderId
为0的订单,那么在这种情况下我将无法区分。
在 OrmLite 中有更好的方法来进行此左连接吗?
null
而不是空对象。从技术上讲是可能的,但我想象不出一个场景,在这种情况下订单具有0
PK是“有效”的。 - mythz