Oracle DB到EF无法正常使用NUMBER(2,0)

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)

我的定义在这里出了什么问题?我该如何解决?

Pal*_*lmi 0

这是一个缓存问题。
以下文章帮助了我: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)