我有两个数据库表(NEWS和NEWS_IMAGES),我已经为它们生成了一个实体模型,并在模型中将它们进行了一对多关联。
但是,当我使用 Navigation 属性 (NEWS_IMAGES) 查询模型时,它不会返回任何最近的数据库插入,但如果我查询导航实体本身,我会得到所有最新更改。
使用导航属性的第一种方法:
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();
EF 的默认行为是仅加载应用程序直接访问的实体(例如新闻)。如果 EF 加载了所有相关实体(例如 News_Images),则最终加载的实体将超过实际需要的实体。您可以使用称为预先加载的东西来使用 Include() 方法加载相关实体。在您的情况下,您将拥有类似以下内容:
var imgs= dal.NEWS.Include("NEWS_IMAGES").Where(n => n.NEWS_ID == NewsID).FirstOrDefault();
您应该尝试使用以下方法
:IEnumerable<NEWS_IMAGES> imgs =
dal.NEWS.Where(n => n.NEWS_ID == NewsID).SelectMany(i => i.NEWS_IMAGES)