In the past I have used primarily singletons and static classes for my DAL, but have been tasked with creating a new DAL in a high load MVC5 environment where performance is the only thing that matters.
Singletons like this seems like they'd be slow on performance and potential high in memory usage. Statics would have a low foot print but also could result in high memory and possible concurrency issues.
public class DAL
{
private DAL()
{
}
private static readonly DAL _singleton = new DAL();
public static DAL Instance()
{
return _singleton;
}
}