Ben*_*Ben 2 c# sqlite servicestack ormlite-servicestack
是否可以使用ServiceStack联接2个以上的表?我尝试过类似的方法,但是我需要链接evrything:
// Join PatientDetails and BedDetails
SqlExpression<PatientDetails.PatientDetails> q = _dbConnection.From<PatientDetails.PatientDetails>();
q.Join<PatientDetails.PatientDetails, BedDetails.BedDetails>((patient, bed) => patient.ByBedId == bed.BedDetailsId);
List<PatientDetails.PatientDetails> PatientBedJOIN = _dbConnection.Select(q);
// Join PatientSession and PatientDetails
SqlExpression<PatientSession> q1 = _dbConnection.From<PatientSession>();
q1.Join<PatientSession, PatientDetails.PatientDetails>((session, patientd) => session.ByPatientId == patientd.PatientDetailsId);
List<PatientSession> SessionPatientJOIN = _dbConnection.Select(q1);
Run Code Online (Sandbox Code Playgroud)
我正在使用OrmLite和Sqlite,谢谢
OrmLite的Advanced Join Example中的示例显示了如何继续将联接添加到同一查询中,例如:
List<FullCustomerInfo> rows = db.Select<FullCustomerInfo>( // Map results to FullCustomerInfo POCO
db.From<Customer>() // Create typed Customer SqlExpression
.LeftJoin<CustomerAddress>() // Implicit left join with base table
.Join<Customer, Order>((c,o) => c.Id == o.CustomerId) // Explicit join and condition
.Where(c => c.Name == "Customer 1") // Implicit condition on base table
.And<Order>(o => o.Cost < 2) // Explicit condition on joined Table
.Or<Customer,Order>((c,o) => c.Name == o.LineItem)); // Explicit condition with joined Tables
Run Code Online (Sandbox Code Playgroud)
在您的示例中,它看起来像:
var q = _dbConnection.From<PatientDetails.PatientDetails>()
.Join<PatientDetails.PatientDetails, BedDetails.BedDetails>(
(patient, bed) => patient.ByBedId == bed.BedDetailsId)
.Join<PatientDetails.PatientDetails, PatientSession>(
(patientd, session) => session.ByPatientId == patientd.PatientDetailsId);
var SessionPatientJOIN = _dbConnection.Select(q);
Run Code Online (Sandbox Code Playgroud)