EntityFramework尝试将CAST枚举编号

Adi*_*dov 5 c# oracle enums entity-framework ef-code-first

我正在Oracle上使用EntityFramework 6.1.3,并且我的枚举如下所示:

public enum Terms
{
    NotSpecified, I, II, III, IV
}
Run Code Online (Sandbox Code Playgroud)

我有使用此枚举的实体:

public class Report
{
    public short Year { get; set; }
    public Terms TermId { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试根据生成的TermId进行过滤时,查询将TermId强制转换为Number( 10,0

Terms termId = Terms.I;
IQueryable<Report> query = ....;
query = query.Where(m => m.Termid == termId);
Run Code Online (Sandbox Code Playgroud)

生成的查询尝试强制转换Term,它非常慢:

WHERE (( CAST( "Extent1"."TERM" AS NUMBER(10,0))) = :p_ling_0);
Run Code Online (Sandbox Code Playgroud)

当我将CAST其移除时,闪电般快速。我尝试设置HasColumnType,将Enum的类型更改为short,byte和以下方案,但均未成功:

.Where(m => (int)m.Termid == (int)termId); // Casting is still there
.Where(m => m.Termid.Equals(termId)); // Equals is not supported for Enums
.Where(m => ((int)termId).Equals((int)m.Termid)); // Casting is still there
Run Code Online (Sandbox Code Playgroud)

如何防止EF生成查询CAST