2016-04-12 15 views
2

Programlamadan vazgeçme konusunda çok yeniyim ve mevcut işlevleri bozmadan uyumsuzluğu gerçekleştirmem isteniyor. Benim Web API Servis Katmanı olarak Böyle bir şey var:Sistem koleksiyonlarını bekleyemez Genelde

public IList<Entities.Case.CreateCaseOutput> createCase(ARC.Donor.Data.Entities.Case.CreateCaseInput CreateCaseInput, ARC.Donor.Data.Entities.Case.SaveCaseSearchInput SaveCaseSearchInput) 
{ 
    Repository rep = new Repository(); 
    string RequestType = "Insert"; 
    string strSPQuery = string.Empty; 
    List<object> listParam = new List<object>(); 
    SQL.CaseSQL.getCreateCaseParameters(CreateCaseInput, RequestType, out strSPQuery, out listParam); 
    var AcctLst = rep.ExecuteStoredProcedure<Entities.Case.CreateCaseOutput>(strSPQuery, listParam).ToList(); 
    if (!string.IsNullOrEmpty(AcctLst.ElementAt(0).o_case_seq.ToString())) 
     saveCaseSearch(SaveCaseSearchInput, AcctLst.ElementAt(0).o_case_seq); 
    return AcctLst; 
} 

Ve bu SaveCaseSearch uyumsuz uygulanır:

public async Task<IList<Entities.Case.SaveCaseSearchOutput>> saveCaseSearch(ARC.Donor.Data.Entities.Case.SaveCaseSearchInput SaveCaseSearchInput,Int64? case_key) 
{ 
    Repository rep = new Repository(); 
    string strSPQuery = string.Empty; 
    List<object> listParam = new List<object>(); 
    SQL.CaseSQL.getSaveCaseSearchParameters(SaveCaseSearchInput, case_key,out strSPQuery, out listParam); 
    var AcctLst = await rep.ExecuteStoredProcedure<Entities.Case.SaveCaseSearchOutput>(strSPQuery, listParam).ToList(); 
    return AcctLst; 
} 

Ama diyor ki:

enter image description here

ExecuteStoredProcedure benziyor :

public IEnumerable<T> ExecuteStoredProcedure<T>(string strSPQuery, List<object> parameters) 
{ 
    _msg = ""; 
    try 
    { 
     this._context.Database.CommandTimeout = 280; 

     return this._context.Database.SqlQuery<T>(strSPQuery, parameters.ToArray()); 

    } 
    catch (Exception ex) 
    { 
     _msg = "ERROR: " + ex.Message; 
     if (ex.InnerException != null) { _msg += "INNER EXCEPTION: " + ex.InnerException; } 
     log.Info(_msg); 
    } 
    return null; 
} 

Ne yapılabilir? ToListAsync() bir şey mi bakıyorsunuz? Denedim zaman

enter image description here

var ve ExecuteStoredProcedure tanımını değiştirerek

public Task<IEnumerable<T>> ExecuteStoredProcedure<T>(string strSPQuery, List<object> parameters) 
{ 
    _msg = ""; 
    try 
    { 
     this._context.Database.CommandTimeout = 280; 

     return this._context.Database.SqlQuery<T>(strSPQuery, parameters.ToArray()); 

    } 
    catch (Exception ex) 
    { 
     _msg = "ERROR: " + ex.Message; 
     if (ex.InnerException != null) { _msg += "INNER EXCEPTION: " + ex.InnerException; } 
     log.Info(_msg); 
    } 
    return null; 
} 

hata üretir: örtük 'türü dönüştürülemez

Hata 13 System.Data.Entity.Infrastructure .DbRawSqlQuery 'ila' System.Threading.Tasks.Task> 'C: \ Users \ m1034699 \ Desktop \ Stuart_V2_12042016 \ Stuart Web Hizmeti \ ARC.Donor.Data \ Repository.cs 115 24 ARC.Donor.Data

Bunu nasıl yapacağından emin değilim. Lütfen yardım et.

+1

'ToListAsync()' 'System.Data.Entity' ad. Yapmaya çalıştığınız şeyden pek emin değilim, sadece tek bir göreviniz var gibi görünüyor ve geri dönüş değerini bile kullanmıyorsunuz. Async koduna gerçekten ihtiyacınız var mı? –

+0

'ExecuteStoredProsedürü ' Görev döndürülmelidir > ' – bitbonk

+0

Aynı şeyi denedim. Ama ekli hatayı aldım. :( – StrugglingCoder

cevap

2

Yöntemlerin Async sürümünü kullanmanız gerekir.

deneyin:

Yalnızca kullanmaya gerek
var AcctLst = await rep.ExecuteStoredProcedure<Entities.Case.SaveCaseSearchOutput>(strSPQuery, listParam).ToListAsync(); 
+0

Bilmiyorum, üzgünüm ...Ama neden bir Görev döndürmeye çalıştığınızı anlamaya çalışacağım, ancak ExecuteStoredProcedure içinde uyumsuz veya beklemede değil. –

+0

Yardımlarınız için teşekkürler efendim. Öyleyse, bu durumda ExecuteStoredProcedure'da beklemede/beklemede yalnızca doğru mu? Şimdi bu dönemin beklemesini bekliyorum.Database.SqlQuery (strSPQuery, parameters.ToArray()) ToListAsync(); Yani ToListAsync() hizmetimde daha fazla ihtiyaç duyulmuyor mu? Aslında bu konuda çok yeniyim .. etrafta tahmin ettiğim için çok üzgünüm. – StrugglingCoder

+0

Bir Görev döndüren bir şey çalıştırıyorsanız, beklemeniz gerekir. Kullanmazsanız, değişkeni görev saklar, T yok –