2017-12-27 20 views
0

が起こっているべきではありませんタイムアウトは、私は私のcustominfoメソッドを使用して、このメソッドを呼び出しています、私はDevExpress社sechudlerリサイズの予定を変更していると私は私のコンテキスト</p> ​​ <p>の問題を取得

ここで
private void dxsourceNetAppointments_AppointmentViewInfoCustomizing(object sender, AppointmentViewInfoCustomizingEventArgs e) 
{ 
     if (e != null) 
     { 
      if (e.ViewInfo.Appointment.Id != null) 
      { 

       _newAppointment = SourceDal.getApppointmentById((int)e.ViewInfo.Appointment.Id); 
       _newAppointmentType = SourceDal.getAppointmentTypesById(_newAppointment.AppointID); 


       e.ViewInfo.Appearance.BackColor = Color.FromName(_newAppointmentType.Color); 
      } 
     } 
    } 

あなたは私の状況を確認でき

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data.Entity.Validation; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

using WindowsFormsApplication1.Classes.LookUps; 

namespace WindowsFormsApplication1 
{ 
    public class SourceContext : ContextBase 
    { 
     public SMBASchedulerEntities _sourceEntities = new SMBASchedulerEntities(); 
    private SystemDa _systemDB = new SystemDa(); 

public Appointment getApppointmentById(int AppointmentId) 
    { 
     Appointment q; 
     try 
     { 

      if (AppointmentId == -1)// if the patient id is -1 we want to create a new record. 
      { 
       Appointment appointment = new Appointment(); 
       return appointment; 

      } 
      q= _sourceEntities.Appointments 
       .Where(w => w.ID == AppointmentId).SingleOrDefault(); 

     } 
     catch (Exception ex) 
     { 
      throw new EntityContextException(" etApppointmentById(int AppointmentId) failed.", ex); 
     } 
     return q; 
    } 


    public AppointmentType getAppointmentTypesById(int appointmentTypeId) 
    { 
     AppointmentType _appointmentTypes = new AppointmentType(); 
     try 
     { 
      _appointmentTypes = _sourceEntities.AppointmentTypes 
       .Where(a => a.ID == appointmentTypeId).FirstOrDefault(); 
     } 


     catch (Exception EX) 
     { 

     } 
     return _appointmentTypes; 
    } 

} しかし、私が得ているエラーは

{"実行タイムアウトが満了しました。タイムアウト時間は、操作が完了する前に経過するか、サーバーが応答していません。 "}

はまた、それがランダムにエンティティのRetainSameConnection = Trueのプロパティと同じようにありcurrecnt接続が開いていると言ってメッセージを変更するのでしょうか?

私はここで間違って何が起こっているか理解していない

+0

コードには多くの問題があります。私は文脈の生涯を間違って管理していると思われますが、まずC#の基本的なコーディング標準を守らなければなりません。 'System.Exception'をキャッチしないで、メソッド名にPascalCaseを使い、ヌル値を扱う'?。 'と' is'を使い、例外を捕まえない限り、リソースの寿命を短くし、 '深刻な継承階層を避けてください。 –

答えて

0

Aluanハダッド上記の回答からは、私がやっていたものindead正しかったコンテキストファクトリを作成し、それは

public class ContextFactory 
{ 

    public static SourceContext ObtainContext() 
    { 

     SourceContext context = null; 
     string key = Thread.CurrentContext.ContextID.ToString(); 
     LocalDataStoreSlot slot = Thread.GetNamedDataSlot(key); 
     if (slot != null) 
     { 
      context = (SourceContext)Thread.GetData(slot); 
     } 
     if (context == null) 
     { 
      context = new SourceContext(); 
      if (slot == null) 
      { 
       slot = Thread.AllocateNamedDataSlot(key); 
      } 
      Thread.SetData(slot, context); 
     } 
     return context; 
    } 

    } 
} 
012私の問題を解決しました

これは私が上でやっていたこととは別の方法で呼び出されます。

SourceContext SourceDal = ContextFactory.ObtainContext(); 

これは、このタイプの質問に遭遇する他の人に役立ちます。

関連する問題

 関連する問題