2017-04-12 43 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.

相关问题