2014-12-26 2 views
1

데이터를 삽입하기위한 기존 저장 프로 시저가 있습니다. 동일한 SP 값을 삽입 한 후 int 값을 반환하고 싶습니다.값을 반환하십시오. EF 코드를 기준으로 먼저

제 질문은 EF 코드와 관련하여 C# 코드를 작성하는 방법입니다.

복귀가 삽입 값은 'A', 'B'

답변

2

SqlQuery

using (var context = new MyContext()) 
{ 
    var input = "a"; 
    var result = context.Database.SqlQuery<int>("dbo.MyProc @param",  
               new SqlParameter("@param", input)) 
         .FirstOrDefault(); 
    // use result 
} 

@param 입력의 이름을 이용하여 임의의 질의 및 프록을 할 수있다 숫자 0 또는 1이고 param ('a', 'b')을 SPROC에 적용하면 <int>이 결과의 형식 매개 변수입니다. 동일한 방법으로 반환 된 엔티티를 바인딩 할 수도 있습니다. 우리는 다시, input 매개 변수는 SQL 주입 문제

var result = context.Database.SqlQuery<int>("dbo.MyProc @param",  
              new SqlParameter("@param", input)) 
        .FirstOrDefault(); 

편집을하지 않도록했습니다 간단한 정수 스칼라는 달리

이 SPROC에서 반환 학생, 당신의 EF 모델의 일류 기관 등의 Students 사운드 및 DbSets으로 작성해야합니다.이 방법을 사용하면 Sql에 대한 LINQ의 모든 기능을 사용할 수 있습니다.

하지만 당신은 이미 당신을 위해 필터링 않는 PROC이있는 경우 예, 당신은 사용할 수 있습니다

var students = context.Database.SqlQuery<Student>("dbo.MyProc @param",  
              new SqlParameter("@param", input))) 
         .ToList() 

Student의 속성과 일치하는 모든 열을 일치하고 바인딩합니다.

var students = context.Students.SqlQuery("dbo.MyProc @param",  
              new SqlParameter("@param", input))) 
         .ToList() 
+0

여러분의 도움에 감사드립니다 : Student 이미 DbSet<>와 엔티티 인 경우 또는,하는 DbSet.SqlQuery 과부하가있다! "목록 SStudent = ...."인 많은 데이터를 검색해야하는 경우, 그것을 쓰려면 충분합니까? 아니면 더해야합니까? – KLN

+0

@KLN 틀린 점에 답장을 했습니까? 원래의 질문이나이 대답은 학생과 관련이 없습니다. –

+0

@KLN 학생들은 EF 모델에서 최고 수준의 엔티티처럼 들리며 'DbSets'로 만들어야합니다. 이렇게하면 LINQ 번역의 모든 기능을 SQL에 사용할 수 있습니다. 그러나 네, 이미 필터링을 수행하는 PROC가 있다면 result = context.Database.SqlQuery (...) 또는 result = context.Students.SqlQuery (...)를 다음과 같이 바꿀 수 있습니다 if 학생은 이미'DbSet <>'이있는 개체입니다. – StuartLC

관련 문제