2017-04-12 92 views
0

我想使用PetaPoco ORM從MySQL表中獲取數據。以下是獲取一條記錄的示例代碼:有沒有一種方法來概括petapoco選擇查詢

public void ShowEmployerDetails() 
     { 
      using (var db = new PetaPoco.Database ("mysql_mydb")) { 
       try { 
        var employers = db.Query <Employers> ("SELECT * FROM Employer WHERE id = 123456789"); 
        foreach(var e in employers) { 
         return e.EmployerName; 
        } 
       } catch (Exception ex) { 
        log.Error (ex.Message); 
       } 
      } 
     } 

需要在db.Query函數中傳遞實體類型。對於每個數據庫表,我們需要定義實體。在這種情況下,實體類型是<Employers>和代碼是:

public class Employers 
    { 
     public int id { get; set; } 
     public string EmployerName { get; set; } 
    } 

有,我們也可以概括上述選擇查詢什麼辦法?舉例來說,我打算使用單查詢等,以獲取輸出:

PetaPocoQueryEntities <Employers>.GetDataFromEntities ("SELECT * FROM Employer WHERE id = 123456789", "EmployerName"); 

和查詢可能是類似下面,其中實體類型可以爲通用類型T被通過,不知道是否有某種方式提供列命名和動態獲取列值:

public static class PetaPocoQueryEntities <T> 
    { 
     public static readonly ILog log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); 

     public static T GetDataFromEntity (string sqlQuery, string colName) 
     { 
      using (var db = new PetaPoco.Database ("mysql_mydb")) { 
       try { 
        var entityResults = db.Query<T> (sqlQuery); 
        foreach (var result in entityResults) { 
         log.Info(colName + " value is " + result.colName); 
        } 
       } catch (Exception ex) { 
        log.Error (ex.Message); 
       } 
       return colName; 
      } 
     } 
} 

請幫助。

回答

1

有必要通過實體類型db.Query功能

簡短的回答 - 是的。 PetaPoco使用此信息將查詢中的數據映射回實體

有什麼辦法可以概括上面的select查詢嗎?例如,我打算使用如下單個查詢來獲得輸出:

是的,你可以裝配它。 This integration test should get you started.

相關問題