我如何使用 DbContext 调用存储过程并将结果集映射到模型属性
How do i use DbContext to call stored procedure and map the result set to the model properties
我正在使用 DbContext 调用我的 MVC 应用程序中的存储过程。
下面是我用来调用存储过程并映射到我的模型属性的代码。
List<myModel> _listMyModel = new List<myModel>();
using (var ctx = new DbContext("ConnectionString1"))
{
var param = new SqlParameter
{
ParameterName = "@Param",
Value = strLob,
SqlDbType = System.Data.SqlDbType.VarChar
};
ctx.Database.CommandTimeout = 0;
_listMyModel = ctx.Database.SqlQuery<myModel>("exec MyProc @Param", param).ToList();
但是这里的问题是,如果存储过程结果集有一些space或者数据类型不同那么它会抛出异常。
我只需要在这里而不是使用它有没有其他方法可以将结果集映射到模型属性?
针对上述问题,我找到了一种情况。
使用正常的 sql 命令获取结果集并填写数据表。
之后使用 entitytomodel 方法自定义特定列并在通用列表属性中设置。
例如:如下所示:
var dataTable = _dbLibrary.GetDataTable(1, "Proc_Name", Parameters);
if (dataTable.Rows.Count > 0)
{
_listGenric = (from DataRow row in dataTable.Rows
select new GenericList
{
ListItem1 = row["Column Name"].ToString(),
}).ToList();
}
这种方法对我有用。
我正在使用 DbContext 调用我的 MVC 应用程序中的存储过程。 下面是我用来调用存储过程并映射到我的模型属性的代码。
List<myModel> _listMyModel = new List<myModel>();
using (var ctx = new DbContext("ConnectionString1"))
{
var param = new SqlParameter
{
ParameterName = "@Param",
Value = strLob,
SqlDbType = System.Data.SqlDbType.VarChar
};
ctx.Database.CommandTimeout = 0;
_listMyModel = ctx.Database.SqlQuery<myModel>("exec MyProc @Param", param).ToList();
但是这里的问题是,如果存储过程结果集有一些space或者数据类型不同那么它会抛出异常。
我只需要在这里而不是使用它有没有其他方法可以将结果集映射到模型属性?
针对上述问题,我找到了一种情况。 使用正常的 sql 命令获取结果集并填写数据表。 之后使用 entitytomodel 方法自定义特定列并在通用列表属性中设置。
例如:如下所示:
var dataTable = _dbLibrary.GetDataTable(1, "Proc_Name", Parameters);
if (dataTable.Rows.Count > 0)
{
_listGenric = (from DataRow row in dataTable.Rows
select new GenericList
{
ListItem1 = row["Column Name"].ToString(),
}).ToList();
}
这种方法对我有用。