2015-10-02 5 views
0

Я новичок в Linq-to-SQL и ASP.NET MVC.Linq-to-SQL в ASP.NET MVC с использованием хранимых процедур

Можно ли использовать хранимые процедуры в Linq-to-SQL с помощью ASP.NET MVC?

ИЛИ возможно ли использовать хранимые процедуры с LINQ в ASP.NET MVC?

Я хочу использовать CTE внутри моих хранимых процедур.

Просьба дать ваши предложения для достижения этой цели.

Или лучше использовать Entity Framework для этого?

+0

Можете ли вы дать более подробное объяснение или пример псевдокода того, к чему вы стремитесь достичь? – JonE

ответ

0

Да, вы можете это сделать. Вам нужна модель, которая представляет возвращенные данные 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; 
} 
+0

Хорошо, спасибо, сэр. Я попробую и обновить вас с помощью Same @markpsmith .. :) –

+0

Это не имеет ничего общего с исходным вопросом - пожалуйста, создайте еще один вопрос. Кроме того, вам не нужно называть кого-либо «сэром». Ну, не здесь. – markpsmith

+0

Извините, я был смущен в двух вопросах, которые я задал. Кстати, этот код работал отлично для меня. –

Смежные вопросы