MySQL 테이블에서 데이터를 가져 오기 위해 PetaPoco ORM을 사용하려고합니다. 다음은 단 하나의 레코드를 가져 오는 샘플 코드입니다.petapoco select 쿼리를 일반화하는 방법이 있습니까
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 함수에서 엔터티 형식을 전달해야합니다. 각 DB 테이블에 대해 엔티티를 정의해야합니다. 이 경우, 개체 유형은 <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;
}
}
}
도와주세요.