Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# EntityFramework尝试将枚举强制转换为数字_C#_Oracle_Entity Framework_Enums_Ef Code First - Fatal编程技术网

C# EntityFramework尝试将枚举强制转换为数字

C# EntityFramework尝试将枚举强制转换为数字,c#,oracle,entity-framework,enums,ef-code-first,C#,Oracle,Entity Framework,Enums,Ef Code First,我正在将EntityFramework 6.1.3与Oracle一起使用,我的enum如下所示: public enum Terms { NotSpecified, I, II, III, IV } 我有使用此枚举的实体: public class Report { public short Year { get; set; } public Terms TermId { get; set; } } 当我尝试根据TermId进行筛选时,生成的查询将TermId强制转换

我正在将EntityFramework 6.1.3与Oracle一起使用,我的enum如下所示:

public enum Terms
{
    NotSpecified, I, II, III, IV
}
我有使用此枚举的实体:

public class Report
{
    public short Year { get; set; }
    public Terms TermId { get; set; }
}
当我尝试根据TermId进行筛选时,生成的查询将TermId强制转换为数字(10,0):

当我移除
CAST
时,它是闪电般的快。我尝试设置
HasColumnType
,将枚举类型更改为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

如何防止EF生成带有
CAST
的查询?

根据这一点应该是固定的,因为EF 6.1.2无论如何,您可以依赖comments@jbl,可能你提到的评论在我看到之前就被删除了。可能是MS Sql Server的问题已经解决,但Oracle的问题仍然存在。我所指的注释是链接的EF工作项中的注释above@jbl好的,我会尽量让你知道的。Thanks@jbl不幸的是,这没用
WHERE (( CAST( "Extent1"."TERM" AS NUMBER(10,0))) = :p_ling_0);
.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