通过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 开发人员指南以获取有关访问器的更多信息。