J'utilise VS2012
et SQL Server 2012
J'ajoute Dapper
à mon VS2012
comme ceci
J'ai un cours comme celui-ci:
public class DomainClass
{
public SexEnum sex { get; set; }
public int Id { get; set; }
public string Name { get; set; }
}
enum SexEnum
{
Men = 0, Women = 1
}
J'ai une table ATest
et j'ai une requête comme celle-ci:
Select * From ATest
Comment puis-je exécuter cette requête et convertir mon résultat en IList of DomainClass
avec Dapper?
public static IList<DomainClass> GetAllDomains()
{
using (var con = new SqlConnection(Properties.Settings.Default.YourConnection))
{
const String sql = "Select sex, Id, Name From ATest ORDER BY Name ASC;";
con.Open();
IList<DomainClass> domains = con.Query<DomainClass>(sql).ToList();
return domains;
}
}
J'écris cette classe statique et cette méthode d'extension:
/// <summary>
/// Put this Class in your project
/// and use ConvertSqlQueryToIList extension method on SqlConnection object.
/// </summary>
public static class Convert
{
public static IList<T> ConvertSqlQueryToIList<T>(
this SqlConnection sqlConn,
T domainClass,
string sqlQueryCommand
)
{
ConnectionState connectionState = ConnectionState.Closed;
try
{
if (sqlConn.State != ConnectionState.Open)
{
sqlConn.Open();
connectionState = sqlConn.State;
}
IList<T> result = sqlConn.Query<T>(sqlQueryCommand).ToList();
return result;
}
catch (Exception exception)
{
throw exception;
}
finally
{
if (connectionState == ConnectionState.Closed)
sqlConn.Close();
}
}
}
Et j'aime que Dapper convertisse le champ int en propriété Enum,
comme Sex property dans ma quetsion.