public static IEnumerable<T> GetAll<T>() where T : new()
{
using (var conn = new ProfiledDbConnection(new SqlConnection(cs), MiniProfiler.Current))
{
using (var cmd = conn.CreateCommand())
{
cmd.CommandType = CommandType.Text;
cmd.CommandText = "select * from " + TableConvention.Resolve(typeof(T));
conn.Open(); using (var dr = cmd.ExecuteReader())
{
while (dr.Read())
{
var o = new T();
o.InjectFrom<ReaderInjection>(dr);
yield return o;
}
}
}
}
}
public static class TableConvention
{ public static string Resolve(Type t)
{
string _tablename = "";
TableNameAttribute tableName;
var name = t.Name;
foreach(Attribute attr in t.GetCustomAttributes(true))
{
tableName = attr as TableNameAttribute;
if(tableName!=null)
_tablename = tableName.Name;
} if (string.IsNullOrEmpty(_tablename))
{
if (name.EndsWith("s"))
_tablename = t.Name + "es";
_tablename = t.Name + "s";
} return _tablename;
} public static string Resolve(object o)
{
return Resolve(o.GetType());
}
}