11

çıktı parametresi ile Önce Entity Framework 4.1 Kodunu kullanıyorum. Bir çıkış parametresi olan saklı bir yordamı çağırmak ve güçlü yazılan sonuç kümesine ek olarak bu çıktı parametresinin değerini almak istiyorum. BuEF4.1 Kod İlk: Kayıtlı Prosedürü

public IEnumerable<MyType> Search(int maxRows, out int totalRows, string searchTerm) { ... } 

gibi bir imzayla Onun bir arama işlevi Ben bir sürü ipucu bulduk "İşlev İthalatta" ama bu kod Birinci ile uyumlu değildir için. Database.SqlQuery (...) kullanarak saklı yordamları arayabilirim ancak bu, çıkış parametreleriyle çalışmaz.

Bu sorunu EF4.1 İlk Kodunu kullanarak çözebilir miyim?

cevap

26

SqlQuery çıkış parametreleri ile çalışır ancak doğru SQL sorgusu ve kurulumu SqlParameter s tanımlamalıdır.

var outParam = new SqlParameter(); 
outParam.ParameterName = "TotalRows"; 
outParam.SqlDbType = SqlDbType.Int; 
outParam.ParameterDirection = ParameterDirection.Output; 

var data = dbContext.Database.SqlQuery<MyType>("sp_search @SearchTerm, @MaxRows, @TotalRows OUT", 
       new SqlParameter("SearchTerm", searchTerm), 
       new SqlParameter("MaxRows", maxRows), 
       outParam); 
var result = data.ToList(); 
totalRows = (int)outParam.Value; 
+0

Mükemmel: gibi bir şey deneyin! Eksik olan parçalar "ParameterDirection.Output" ve sorgu parametresi listesinde "@totalRows" sonra "OUT" idi. Teşekkürler! –

+0

Birden çok OUTPUT parametreniz olduğunda bu işe yaramaz. Her birinin değeri boş. Birden fazla OUTPUT parametresi ile bunu yapmak için herhangi bir şans? –

+0

benim sp hiçbir şey döndürmez .... yani bu durumda ne yapılmalıdır .... SqlQuery çalışmıyor ... herhangi bir eylem mi? –