Я пытаюсь использовать PetaPoco ORM для получения данных из таблицы MySQL. Ниже приведен пример кода для получения только одной записи:
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;
}
}
}
Пожалуйста помоги.