Entity Framework 4.1을 사용하여 ASP.Net MVC 3 응용 프로그램을 개발 중입니다. 실행해야하는 특정 복합 쿼리의 경우 원시 SQL 쿼리를 작성하여 dbSet.SqlQuery 메서드에 전달하기로 결정했습니다.Entity Framework 4.1 Raw SQL
나는 이라는 문자열 변수에 SQL 쿼리를 할당하는 서비스 메소드가 있습니다. 쿼리가 두 개의 매개 변수를 전달할 때 SQL 주입을 방지하기 위해 이러한 매개 변수를 매개 변수화했습니다.
public IList<User> GetAvailableLocums(int shiftID, int shiftDateID)
{
var query ="Select .... where t1 = @p0 and t2 = @p1";
ObjectParameter _shiftID = new ObjectParameter("p0", shiftID);
ObjectParameter _shiftDateID = new ObjectParameter("p1", shiftDateID);
object[] parameters = new object[] { _shiftID, _shiftDateID };
return _UoW.User.GetWithRawSql(query, parameters).ToList();
}
그런 다음 쿼리와 매개 변수를 저의 쿼리를 실행하는 저장소의 메서드에 전달합니다.
public IEnumerable<TEntity> GetWithRawSql(string query, params object[] parameters)
{
return dbSet.SqlQuery(query, parameters).ToList();
}
나는 매핑이 개체에서 존재하지 않는이 코드
를 실행하려고하면 그러나, 나는 현재 다음과 같은 오류가 나는 SQL Server 관리 Studio에서 테스트 한대로 쿼리가 정확한지 알고 알려진 관리 공급자 기본 유형 System.Data.Objects.ObjectParameter 을 입력
사람이 내가이 문제를 해결할 수있는 방법에 대한 어떤 제안이 있습니까?
도움 주셔서 감사합니다.
죄송합니다. 해결책이 아닙니다. – tgriffiths