我想在mvc中开发一个示例项目。在这,我试图从数据库(mysql)获取用户列表。我正在使用企业库DLL来设置数据库连接。
public IEnumerable<UserViewModel> GetUserList()
{
DatabaseProviderFactory factory = new DatabaseProviderFactory();
Database db = factory.Create("MySqlConnection");
DbCommand dbc = db.GetStoredProcCommand("uspGetUserList");
dbc.CommandType = CommandType.StoredProcedure;
return db.ExecuteDataSet(dbc);
}
我知道executionataset只执行数据集类型...我想要执行IEnumerable类型的命令..... 谢谢
答案 0 :(得分:1)
如果要在不手动构建IEnumerable类型的情况下(从DataSet或IDataReader)返回IEnumerable类型,则可以使用访问器。
在你的情况下,你可以看起来像这样:
public IEnumerable<UserViewModel> GetUserList()
{
DatabaseProviderFactory factory = new DatabaseProviderFactory();
Database db = factory.Create("MySqlConnection");
IEnumerable<UserViewModel> results = db.ExecuteSprocAccessor<UserViewModel>("uspGetUserList");
return results;
}
这假定可以从存储过程结果集映射UserViewModel(例如,列名与属性名称相同)。如果没有,那么你需要create a custom mapper。有关访问者的详细信息,请参阅开发人员指南中的Retrieving Data as Objects。