Generic Data Access Layer C# Library