ASP.NET Entity Framework 4 Навигационная сущность, не отражающая изменения, внесенные в базу данных - PullRequest
7 голосов
/ 19 мая 2011

У меня есть две таблицы базы данных (NEWS и NEWS_IMAGES), для которых я создал модель сущности, в которой между ними в модели установлена ​​связь один ко многим.

Однако, когда я запрашиваю модель, используя свойство Navigation (NEWS_IMAGES), она не возвращает никаких последних вставок в базу данных, но если я запрашиваю сам объект навигации, то я получаю все последние изменения.

Первый метод с использованием свойства Navigation:

IEnumerable<NEWS_IMAGES> imgs = dal.NEWS.Where(n => n.NEWS_ID == NewsID).FirstOrDefault().NEWS_IMAGES;   

Второй метод с использованием фактического объекта (возвращает все последние изменения):

IEnumerable<NEWS_IMAGES> imgs = dal.NEWS_IMAGES.Where(i => i.News_ID == NewsID)

Это код, который вставляет запись в сущность NEWS_IMAGES:

NEWS_IMAGES img = new NEWS_IMAGES
            {
                News_ID = newsID,
                News_Image_Filename_Small = file_Sm,
                News_Image_Filename_Medium = file_Med,
                News_Image_Filename_Large = file_Lrge,
                News_Image_Order = imgCnt + 1
            };
            dal.NEWS_IMAGES.AddObject(img);
            dal.SaveChanges();

Ответы [ 2 ]

3 голосов
/ 21 июня 2011

Стандартным поведением EF является загрузка только объекта, к которому непосредственно обращается приложение (например, Новости).Если EF загрузил все связанные объекты (например, News_Images), вы в конечном итоге загрузите больше объектов, чем вам действительно нужно.Вы можете использовать что-то под названием eager loading для загрузки связанных объектов, используя метод Include () .В вашем случае у вас будет что-то вроде этого:

var imgs= dal.NEWS.Include("NEWS_IMAGES").Where(n => n.NEWS_ID == NewsID).FirstOrDefault();
0 голосов
/ 25 мая 2011

Вы должны попробовать использовать следующее, что должно сделать трюк:

IEnumerable<NEWS_IMAGES> imgs = 
   dal.NEWS.Where(n => n.NEWS_ID == NewsID).SelectMany(i => i.NEWS_IMAGES)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...