.net EF4刷新数据

.net EF4刷新数据,.net,c#-4.0,entity-framework-4,.net,C# 4.0,Entity Framework 4,我有一个类似这样的实体: public class Customer { public string Id { get; set; } public string Name { get; set; } } 我正在使用LinQ阅读以下内容: public IQueryable<Customer> GetCustomer() { var result = from cust in _dbContext.Customers.AsNoTracking() selec

我有一个类似这样的实体:

public class Customer
{
    public string Id { get; set; }
    public string Name { get; set; }
}
我正在使用LinQ阅读以下内容:

public IQueryable<Customer> GetCustomer()
{
    var result = from cust in _dbContext.Customers.AsNoTracking() select cust;
    return result;
}
public IQueryable GetCustomer()
{
var result=来自_dbContext.Customers.AsNoTracking()中的cust选择cust;
返回结果;
}
第一次一切正常,但当我在DB中手动添加客户时,同一客户没有反映在这个查询中,它总是返回旧记录

那么,我如何始终从DB获得更新的客户


注意:我使用的是EF 4

问题在于方法调用
。AsNoTracking()
AsNoTracking()方法是一个分离的数据列表,请在5.1项中的链接上进行验证,解释如下:

如果您处于只读方案中,并且希望避免 将对象加载到ObjectStateManager中,可以发出“No “跟踪”查询。可以在查询时禁用更改跟踪 水平

请注意,通过禁用更改跟踪,您可以有效地 关闭对象缓存。当您查询实体时,我们无法 通过拉取以前的物化查询跳过物化 来自ObjectStateManager的结果。如果您重复查询 对于同一上下文中的相同实体,实际上可能会看到 启用更改跟踪可提高性能

使用ObjectContext、ObjectQuery和ObjectSet实例进行查询时 一旦设置了MergeOption,就会记住它,以及 基于它们的组合将继承父级的有效合并选项 查询使用DbContext时,可以通过调用 DbSet上的AsNoTracking()修饰符


删除链接查询的
.AsNoTracking()
,即使在删除之后也是如此。AsNoTracking()仍然从缓存中读取数据,并且不在数据库中反映日期。我使用了上面的代码,效果很好。这可能取决于您在上下文中输入数据的方式。执行插入时,使用_dbContext.Customers.Add(customer)。。。。或者通过SQLComand执行插入?我已经在DB中手动插入了记录,那么如何刷新上下文?在我的上下文中,我使用值为true的
context.Configuration.AutoDetectChangesEnabled
。看看这个。如果无法解决,请检查以下答案:嗨,你能帮我解决这个问题吗?我必须使用原始sql查询var result=\u dbContext.Database.SqlQuery(“从eis_层次结构中选择ID、名称、DB_字段”).ToList()读取多列;但是没有得到正确的输出