实体框架:如何在从引用表中删除后读取当前数据

时间:2011-09-19 16:10:17

标签: entity-framework

我有三个表Job,Contact和一个名为JobContact的引用表。当我从JobContact表中删除记录时,所以记录从数据库中删除,但它仍然存在于代码中。我的意思是,当我按键选择Job时,当我正在访问job.JobContact时,所以记录仍在那里。

如何强制EF从此表中获取当前数据?

编辑:

我正在使用EF来删除记录。以下是我正在做的代码示例:

第1步:从JobContact中删除记录:

var jobContactRepos = RepositoryFactory.GetRepository<JobContact>();    
var jobContact = jobContactRepos.SelectByKey(jobContactId);

jobContactRepos.Delete(jobContact);
jobContactRepos.Save(); 

步骤2:在完成第1步后从DB获取作业记录:

var jobRepos = RepositoryFactory.GetRepository<Job>();
var job = jobRepos.SelectByKey(id);

在步骤1之后,记录从DB中删除:没关系。

在第2步之后,job仍然存在于job.JobContact实体中:它不正常。

RepositoryFactory已经创建了一个新的上下文。所以我不明白。我应该在代码中的哪个位置使用Refresh()方法?

感谢

1 个答案:

答案 0 :(得分:0)

您可以处置EF上下文并创建一个新上下文,这将强制EF从DB获取新数据,而不是使用可能的缓存数据。或者,您可以使用RefreshMode.StoreWins在您的上下文中致电Refresh()

但真正的问题是为什么要直接从数据库中删除此记录而不使用EF呢?如果您使用EF上下文从Contact实体的Contacts导航属性集合中删除Job实体,则首先应该出现此问题。

修改

参考表应在EF中表示为Contacts实体中的导航属性Job,以及Jobs实体中的导航属性Contact。您使用的是旧版本的EF(我可能对以前的版本不熟悉)或者是否有自定义存储库层来引入此参考实体?