Свойства навигации становятся пустыми после использования предложения - PullRequest
0 голосов
/ 10 ноября 2011

У меня есть модель объекта базы данных в моем проекте ASP.Net

Model.edmx construct

Существует две конструкции посторонних ключей, обе являются конструкциями между идентификаторами в показанном отношении.

Теперь я пытаюсь добавить 100 образцов записей следующим методом

            IntraNetEntities entities = new IntraNetEntities();

        if (entities.EmployeeList.Count() == 0)
        {
            using (entities)
            {
                for (int i = 0; i < 100; i++)
                {     

                    EmployeeList newEmployeeList = new EmployeeList()
                    {
                        department = "Standardabteilung",
                        mobile = i,
                        landline = 1 + i,
                        mail = "Standardemail",
                        position = "Standardfunktion",
                        shortcode = "abc",
                        lastname = "StandardNachname",
                        roomnumber = Convert.ToDouble(i),
                        firstname = "Standardvorname"
                    };

                    PrivateContact newPrivateContact = new PrivateContact()
                    {
                            city = "Standardstadt",
                            country = "deutscheland",
                            landline = i,
                            mail = "standardemail",
                            mobile = i * 2,
                            street = "standardstreet",
                            zip = i * 10,
                            EmployeeList = newEmployeeList
                    };

                    WorkContact newWorkContact = new WorkContact()
                    {
                        city = "Standardstadt",
                        country = "deutscheland",
                        landline = i * 9,
                        mobile = i * 12 / 8,
                        mail = "standardmail",
                        street = "standardstraße",
                        zip = i * 9,
                        EmployeeList = newEmployeeList
                    };

                    newEmployeeList.PrivateContact = newPrivateContact;
                    newEmployeeList.WorkContact = newWorkContact;

                    entities.AddToEmployeeList(newEmployeeList);
                    entities.AddToPrivateContact(newPrivateContact);
                    entities.AddToWorkContact(newWorkContact);

                }

                entities.saveChanges();

                return true;
            }
        }
        else
        {
            return false;
        }

Моя проблема в том, что мои свойства навигации исчезают, когда этот метод заканчивается!Все они отлично выглядят при отладке, хотя все еще находятся в прецеденте использования, но после этого все они равны нулю без каких-либо изменений этих значений.

Как сохранить значения навигации?

Спасибо

Ответы [ 2 ]

1 голос
/ 10 ноября 2011

Использование вызовов «Распоряжаться» в конце. Вот почему ваши навигационные свойства снижаются. С веб-сайта MSDN:

Оператор using вызывает метод Dispose для объекта правильным образом, и (когда вы используете его, как показано ранее), он также заставляет сам объект выходить из области видимости, как только вызывается Dispose.

http://msdn.microsoft.com/en-us/library/yh598w02.aspx

Оператор using позволяет программисту указать, когда объекты, использующие ресурсы, должны их освобождать.

http://msdn.microsoft.com/en-us/library/yh598w02%28v=vs.80%29.aspx

0 голосов
/ 10 ноября 2011

При выходе из блока using ваш контекст будет ликвидирован.Свойства навигации нуждаются в существующем контексте.Таким образом, вы должны убедиться, что ваш контекстный объект живет достаточно долго.

Вы можете рассмотреть возможность использования Autofac или другого фреймворка di, который поддерживает asp.net.

С использованиемHttpRequestScoped() метод расширения, который ваш контекст будет создан и удален в соответствии с жизненным циклом веб-запроса:

builder.RegisterType<IntraNetEntities>().As<IntraNetEntities>().HttpRequestScoped();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...