OrmLite 按多列加入 table
OrmLite join table by multiple columns
使用 OrmLite 如何通过多列连接 table?
我有 Notes
table 可以包含 QutoeHeader
或 OrderHeader
的数据,所以我尝试像这样加入和使用 SelectMulti()
:
var userSpecificQuery =
_db
.From<Customer>()
.Where(x => x.SalesRepresentativeId == userId)
.LeftJoin<Customer, QuoteHeader>((c, q) => c.Id == q.CustomerId)
.LeftJoin<Customer, OrderHeader>((c, o) => c.Id == o.CustomerId)
.LeftJoin<OrderHeader, QuoteHeader, Notes>((oh,qh, n) => oh.Id == n.OrderId || qh.Id == n.QuoteId)
;
var userSpecificRecords =
_db.SelectMulti<Customer, QuoteHeader, OrderHeader, Notes>(userSpecificQuery);
但是我得到错误:
table name "quote_header" specified more than once
我想加入所有匹配 OrderId 或 QuoteId 的记录。我尝试了几种不同的方法并得到了同样的错误。这可能吗?
编辑:
这里是笔记模型
public class Notes : BaseModel
{
[AutoIncrement]
public long Id { get; set; }
[ForeignKey(typeof(QuoteHeader))]
public long? QuoteId { get; set; }
[ForeignKey(typeof(OrderHeader))]
public long? OrderId { get; set; }
public string NoteText { get; set; }
}
与其多次加入 QuoteHeader
,不如将条件移动到 Where
:
db.From<Customer>()
.Where(x => x.SalesRepresentativeId == userId)
.LeftJoin<Customer, QuoteHeader>((c, q) => c.Id == q.CustomerId)
.LeftJoin<Customer, OrderHeader>((c, o) => c.Id == o.CustomerId)
.LeftJoin<OrderHeader, Notes>((oh, n) => oh.Id == n.OrderId)
.Where<OrderHeader,QuoteHeader,Notes>((oh,qh,n) => oh.OrderId != null || qh.Id == n.QuoteId)
使用 OrmLite 如何通过多列连接 table?
我有 Notes
table 可以包含 QutoeHeader
或 OrderHeader
的数据,所以我尝试像这样加入和使用 SelectMulti()
:
var userSpecificQuery =
_db
.From<Customer>()
.Where(x => x.SalesRepresentativeId == userId)
.LeftJoin<Customer, QuoteHeader>((c, q) => c.Id == q.CustomerId)
.LeftJoin<Customer, OrderHeader>((c, o) => c.Id == o.CustomerId)
.LeftJoin<OrderHeader, QuoteHeader, Notes>((oh,qh, n) => oh.Id == n.OrderId || qh.Id == n.QuoteId)
;
var userSpecificRecords =
_db.SelectMulti<Customer, QuoteHeader, OrderHeader, Notes>(userSpecificQuery);
但是我得到错误:
table name "quote_header" specified more than once
我想加入所有匹配 OrderId 或 QuoteId 的记录。我尝试了几种不同的方法并得到了同样的错误。这可能吗?
编辑:
这里是笔记模型
public class Notes : BaseModel
{
[AutoIncrement]
public long Id { get; set; }
[ForeignKey(typeof(QuoteHeader))]
public long? QuoteId { get; set; }
[ForeignKey(typeof(OrderHeader))]
public long? OrderId { get; set; }
public string NoteText { get; set; }
}
与其多次加入 QuoteHeader
,不如将条件移动到 Where
:
db.From<Customer>()
.Where(x => x.SalesRepresentativeId == userId)
.LeftJoin<Customer, QuoteHeader>((c, q) => c.Id == q.CustomerId)
.LeftJoin<Customer, OrderHeader>((c, o) => c.Id == o.CustomerId)
.LeftJoin<OrderHeader, Notes>((oh, n) => oh.Id == n.OrderId)
.Where<OrderHeader,QuoteHeader,Notes>((oh,qh,n) => oh.OrderId != null || qh.Id == n.QuoteId)