【发布时间】:2011-10-28 08:11:58
【问题描述】:
我正在尝试使用一个类来处理数据库上的所有 CRUD,方法是使用带有泛型的 .NET 企业库的 ExecuteSprocAccessor 方法。在我的数据层中,我正在尝试这样的事情:
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, 字符串,参数对象[])'
SelectSingle() 方法背后的想法是,您传入存储过程名称和您想要从数据库中获取的对象的记录 ID。最终我会得到 SelectAll()、Update()、Delete() 等。这些方法中的参数会有所不同,但你会明白我想要完成的工作。
阅读该错误后,我开始认为这可能是不可能的,但是有人知道这是否可行吗?此外,我在数据库中的字段与我的类中的字段 1:1 匹配,所以我没有指定任何映射器。
谢谢
【问题讨论】:
标签: c# asp.net sql-server enterprise-library generics