2011-07-26 12 views
0

私のアプリケーションでは、AsyncControllerを使用する次のメソッドを使用しています。これは、foreachを使用せずに newMessageList = myMessages.ToList();Entity Framework 4、ASPNET MVC 3のAsyncControllerを使用した動的プロキシ

ビューは、HTTPエラー500(内部サーバーエラー)をスローするときに、ビューが結果を解析しようとしないと、動的なプロキシではないリストをnewMessageListに入れる必要があります。 foreachを使用してmyMessageの各プロパティを繰り返し処理するのを避け、動的プロキシを作成しないようにする方法はありますか(ただし、アプリケーション全体ではありません)。

private class MyAsyncResult : IAsyncResult 
    { 
     private static int mCount = 0; 
     private readonly CheckForNewMessagesResponse mCheckForNewMessagesResponse; 
     private readonly Thread mThread; 
     private readonly AutoResetEvent mWait; 

     public MyAsyncResult(CheckForNewMessagesResponse checkForNewMessagesResponse) 
     { 
      List<Message> newMessageList = null; 
      using (var ctx = new Server.Model.ServerPOCOs()) 
      { 
       mCheckForNewmyMessagesResponse = checkForNewmyMessagesResponse; 
       newmyMessageList = new List<myMessage>(); 

       var myMessages = from myMessage in ctx.myMessages 
            where !myMessage.read 
            orderby myMessage.ReceptionDate 
            select myMessage; 


       foreach (myMessage message in myMessages) 
       { 
        myMessage um = new myMessage(); 
        um.concept1 = message.concept1; 
        um.concept2 = message.concept2; 

        newmyMessageList.Add(um); 
       } 
      } 

      mWait = new AutoResetEvent(false); 

      mThread = new Thread(new ThreadStart(() => 
      { 
       Thread.Sleep(TimeSpan.FromMilliseconds(5000)); 

       checkForNewmyMessagesResponse(newmyMessageList); 

       mWait.Set(); 
      })); 

      mThread.Start(); 
     } 

ありがとうございます。ギレルモ。

+0

呼び出してみましたか?).ToList();あなたのLinqクエリの最後に – Daveo

+0

、それは動的なプロキシのリストを取得します – polonskyg

答えて

0

これは動作するはずです:

using (var ctx = new Server.Model.ServerPOCOs()) 
{ 
    ctx.ContextOptions.ProxyCreationEnabled = false; 

    newMessages = (from myMessage in ctx.myMessages 
        where !myMessage.read 
        orderby myMessage.ReceptionDate 
        select myMessage).ToList(); 
} 

編集:ObjectContextはAPIの修正されたサンプルを。

+0

ありがとうLadislav!私はあなたのコードを少し変更する必要がありました... ctx.ContextOptions.ProxyCreationEnabled = false; それは働いた! – polonskyg

+0

はい申し訳ありませんが、あなたは正しいです。私のコードはDbContext API用ですが、あなたはEFv4(ObjectContext API)を使用していると述べました。プロパティは 'ContextOptions'と呼ばれます - 私は自分の答えを変更しました。 –

関連する問題