.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()读取多列;但是没有得到正确的输出