Entity Framework 4, динамические прокси с AsyncController в ASPNET MVC 3 - PullRequest
0 голосов
/ 26 июля 2011

Я использую следующий метод в моем приложении, которое использует AsyncController, который извлекает (при использовании динамического прокси, если я не использую foreach и использую что-то вроде newMessageList = myMessages.ToList ();.

Мне нужно получить в newMessageList список не динамического прокси-сервера, потому что, если нет, когда представление пытается проанализировать результат, генерируется ошибка HTTP 500 (внутренняя ошибка сервера). Есть ли способ избежать использования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();
        }

Заранее спасибо. Гильермо.

1 Ответ

0 голосов
/ 26 июля 2011

Это должно работать:

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();
}

Редактировать: образец, измененный для API ObjectContext.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...