【问题标题】:ServiceStack JOIN 3 tablesServiceStack JOIN 3 个表
【发布时间】:2014-10-25 17:11:56
【问题描述】:

是否可以使用 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);

我正在使用 OrmLite 和 Sqlite, 谢谢

【问题讨论】:

    标签: c# sqlite servicestack ormlite-servicestack


    【解决方案1】:

    OrmLite 的 Advanced Join Example in 展示了如何继续向同一查询添加连接,例如:

    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
    

    在您的示例中如下所示:

    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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-19
      • 1970-01-01
      • 2012-02-02
      • 2015-10-26
      • 2020-09-15
      • 2014-02-21
      • 2017-05-23
      • 2016-10-14
      相关资源
      最近更新 更多