gpt4 book ai didi

ASP.NET Entity Framework 4 导航实体不反射(reflect)对数据库所做的更改

转载 作者:行者123 更新时间:2023-12-02 17:11:23 26 4
gpt4 key购买 nike

我有两个数据库表(NEWS 和 NEWS_IMAGES),我已为其生成了一个实体模型,并在模型中它们之间建立了一对多关联。

但是,当我使用导航属性 (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();

关于ASP.NET Entity Framework 4 导航实体不反射(reflect)对数据库所做的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6057710/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com