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()); } }