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;
 }