I have a base repository with a Generic Get method to return Data using Dapper like
public T Get(Func query)
{
You could do something like this which will return a tuple containing IEnumerables of each type you are after.
In Base Repository
(It's basically a bunch of overloads...you can add more overloads if you have more types).
public Tuple, IEnumerable> GetMultiple(string sql, object parameters,
Func> func1,
Func> func2)
{
var objs = getMultiple(sql, parameters, func1, func2);
return Tuple.Create(objs[0] as IEnumerable, objs[1] as IEnumerable);
}
public Tuple, IEnumerable, IEnumerable> GetMultiple(string sql, object parameters,
Func> func1,
Func> func2,
Func> func3)
{
var objs = getMultiple(sql, parameters, func1, func2, func3);
return Tuple.Create(objs[0] as IEnumerable, objs[1] as IEnumerable, objs[2] as IEnumerable);
}
private List
In Derived Repository
(pretty clean and more importantly, typed!)
public class Foo { }
public class Bar { }
public void sample()
{
var sql = "select * from Foo; select * from Bar";
var foosAndBars = this.GetMultiple(sql, new { param = "baz" }, gr => gr.Read(), gr => gr.Read());
var foos = foosAndBars.Item1;
var bars = foosAndBars.Item2;
}