通过EnterpriseLibrary在mvc中执行存储过程

时间:2016-02-10 09:56:55

标签: mysql sql asp.net-mvc-3 enterprise-library

我想在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类型的命令..... 谢谢

1 个答案:

答案 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