Pal*_*lmi 6 c# oracle entity-framework
我有一个像这样定义的表列:
ENTRY_STATUS NUMBER(2, 0)
Run Code Online (Sandbox Code Playgroud)
在我的EntityFramework类中,相应的字段定义如下:
[Column("ENTRY_STATUS")]
public int Status { get; set; }
Run Code Online (Sandbox Code Playgroud)
检查值以获取条目时,它完全正常:
var order = testDbContext.Orders.FirstOrDefault(o => o.Status > 1);
Run Code Online (Sandbox Code Playgroud)
但是当我order在这个语句之后检查实体时,它总是为零:
if (order != null)
{
if (order.Status == 3) //Always Zero!!!
{ //Do something...
}
}
Run Code Online (Sandbox Code Playgroud)
我的定义在这里出了什么问题?我该如何解决?
这是一个缓存问题。
以下文章帮助了我:http://codethug.com/2016/02/19/Entity-Framework-Cache-Busting/
我不知道查询本身(o => o.Status > 1)识别数据库中的更改但从缓存中检索数据是否是 EF 错误,这可能是不同的。
无论如何,添加 AsNoTracking() 解决了问题:
var order = testDbContext.Orders.AsNoTracking().FirstOrDefault(o => o.Status > 1);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
455 次 |
| 最近记录: |