ASP.NET MVC 中的 Linq-to-SQL 使用存储过程
Linq-to-SQL in ASP.NET MVC using stored procedures
我是 Linq-to-SQL 和 ASP.NET MVC 的新手。
有没有什么方法可以使用 ASP.NET MVC 在 Linq-to-SQL 中使用存储过程?
或者在 ASP.NET MVC 中使用带有 LINQ 的存储过程是否可行?
我想在存储过程中使用 CTE。
请提出您的建议以实现此目标。
还是使用 Entity Framework 更好?
是的,你可以做到。您需要一个表示返回的 SQL 数据的模型,在本例中我将其称为 mySqlModel
。
public List<mySqlModel> GetFromStoredProc(int Id)
{
var returnModel = new List<mySqlModel>();
using (var db = new MyContext())
{
var cmd = db.Database.Connection.CreateCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "dbo.MyStoredProc";
var sParam = cmd.CreateParameter();
sParam.DbType = DbType.Int32;
sParam.ParameterName = "@Id";
sParam.Value = Id;
sParam.IsNullable = false;
cmd.Parameters.Add(sParam);
try
{
db.Database.Connection.Open();
var reader = cmd.ExecuteReader();
// return list as ObjectList
var results = ((IObjectContextAdapter)db).ObjectContext.Translate<mySqlModel>(reader);
// cast to List<entity>
returnModel = (from s in results select s).ToList();
}
catch (Exception ex)
{
ErrorSignal.FromCurrentContext().Raise(ex, HttpContext.Current);
}
finally
{
db.Database.Connection.Close();
}
}
return returnModel;
}
我是 Linq-to-SQL 和 ASP.NET MVC 的新手。
有没有什么方法可以使用 ASP.NET MVC 在 Linq-to-SQL 中使用存储过程?
或者在 ASP.NET MVC 中使用带有 LINQ 的存储过程是否可行?
我想在存储过程中使用 CTE。
请提出您的建议以实现此目标。
还是使用 Entity Framework 更好?
是的,你可以做到。您需要一个表示返回的 SQL 数据的模型,在本例中我将其称为 mySqlModel
。
public List<mySqlModel> GetFromStoredProc(int Id)
{
var returnModel = new List<mySqlModel>();
using (var db = new MyContext())
{
var cmd = db.Database.Connection.CreateCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "dbo.MyStoredProc";
var sParam = cmd.CreateParameter();
sParam.DbType = DbType.Int32;
sParam.ParameterName = "@Id";
sParam.Value = Id;
sParam.IsNullable = false;
cmd.Parameters.Add(sParam);
try
{
db.Database.Connection.Open();
var reader = cmd.ExecuteReader();
// return list as ObjectList
var results = ((IObjectContextAdapter)db).ObjectContext.Translate<mySqlModel>(reader);
// cast to List<entity>
returnModel = (from s in results select s).ToList();
}
catch (Exception ex)
{
ErrorSignal.FromCurrentContext().Raise(ex, HttpContext.Current);
}
finally
{
db.Database.Connection.Close();
}
}
return returnModel;
}