Я пытаюсь использовать один класс для обработки всего моего CRUD в базе данных, используя метод ExecuteSprocAccessor .NET Enterprise Library с обобщениями.В моем слое данных я пробовал что-то вроде этого:
public static class CRUDDatabase
{
private static Database db = DatabaseFactory.CreateDatabase("ITS");
public static T SelectSingle<T>(string sprocName, int id)
{
return db.ExecuteSprocAccessor<T>(sprocName, id).First();
}
}
Тем не менее, я получаю ошибку сборки на обратной линии в методе SelectSingle (), которая гласит:
'T' должен быть неабстрактным типом с открытым конструктором без параметров, чтобы использовать его в качестве параметра 'TResult' в универсальном типе или методе 'Microsoft.Practices.EnterpriseLibrary.Data.DatabaseExtensions.ExecuteSprocAccessor (Microsoft.Practices.EnterpriseLibrary.Data.Database, string, params object []) '
Идея метода SelectSingle () заключается в том, что вы передаете имя хранимой процедуры и идентификатор записиобъект, который вы хотите из базы данных.В конце концов у меня будет SelectAll (), Update (), Delete () и т. Д. Параметры в этих методах будут разными, но вы поймете, чего я пытаюсь достичь.
После прочтения этой ошибки я начинаю думать, что это может быть невозможно, но кто-нибудь знает, может ли это работать?Кроме того, мои поля в базе данных соответствуют 1: 1 с полями в моих классах, поэтому я не указываю никаких картографов.
Спасибо