EntityFramework尝试将CAST枚举编号为数字

时间:2017-09-11 07:53:10

标签: c# oracle entity-framework enums ef-code-first

我正在使用 EntityFramework 6.1.3 Oracle ,我的网址如下:

public enum Terms
{
    NotSpecified, I, II, III, IV
}

我有使用此枚举的实体:

public class Report
{
    public short Year { get; set; }
    public Terms TermId { get; set; }
}

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

Terms termId = Terms.I;
IQueryable<Report> query = ....;
query = query.Where(m => m.Termid == termId);

生成的查询尝试转换Term并且速度非常慢:

WHERE (( CAST( "Extent1"."TERM" AS NUMBER(10,0))) = :p_ling_0);

当我删除CAST时,它快速闪电。我尝试设置HasColumnType,将Enum的类型更改为短,字节和后续方案但没有成功:

.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

如何使用CAST阻止EF生成查询?

0 个答案:

没有答案