通过EnterpriseLibrary执行mvc中的存储过程
Execute stored procedure in mvc through EnterpriseLibrary
我正在尝试用 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);
}
我知道 executedataset 只执行数据集类型...我想要执行 IEnumerable 类型的命令.....
谢谢
如果您想 return 一个 IEnumerable 类型而不需要手动构造它(从 DataSet 或 IDataReader),那么您可以使用访问器。
在你的情况下你可以看起来像这样:
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. See Retrieving Data as Objects 开发人员指南以获取有关访问器的更多信息。
我正在尝试用 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);
}
我知道 executedataset 只执行数据集类型...我想要执行 IEnumerable 类型的命令..... 谢谢
如果您想 return 一个 IEnumerable 类型而不需要手动构造它(从 DataSet 或 IDataReader),那么您可以使用访问器。
在你的情况下你可以看起来像这样:
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. See Retrieving Data as Objects 开发人员指南以获取有关访问器的更多信息。