EF6 Code-First Nullable Byte Cast Error?

时间:2016-09-29 21:26:00

标签: c# linq ef-code-first entity-framework-6

我正在使用Entity Framework 6 Code-First和我的.NET 4.0项目与数据库进行通信。我正在使用的表中的一列是一个允许NULL值的tinyint。在我的模型中,我将该列定义为可以为空的字节(byte?)。我使用LinqPad来测试我的模型。当我尝试运行Linq语句,我说Fieldname.HasValue时,我收到以下错误:

“从物化'System.Int64'类型到'System.Int16'类型的指定强制转换无效。”

任何人都可以了解发生了什么事吗?

2 个答案:

答案 0 :(得分:0)

我认为数据库表中列的数据类型是Int64(BIGINT),但您的数据模型有byte?。您是否需要将基础表列的数据类型更改为TINYINT或将实体数据模型属性类型更改为long?。

答案 1 :(得分:0)

经验教训:当您收到“从物化[type1]到[type2]的指定演员无效”消息时,请检查所有字段,而不仅仅是您要查询的字段。

我的错误是假设错误与具有可空字节值的字段有关。原来我有另一个字段我定义为“int”,但SQL类型是“bigint”,因此错误。

感谢大家的耐心,帮助和时间。