【问题标题】:Unable to generate the model because of the following exception: 'Specified cast is not valid. '由于以下异常,无法生成模型:“指定的转换无效。 '
【发布时间】:2014-10-02 01:15:22
【问题描述】:

我有一个实体框架内部问题。我有一个自定义提供程序,它试图从存储过程生成模型,但在最终模型生成期间,它给出了上述错误。

完整的错误信息如下:

由于以下异常,无法生成模型:'指定的转换无效。 '。 从数据库加载元数据耗时 00:00:22.1755758。 生成模型耗时 00:00:25.3114884。 将连接字符串添加到 App.Config 文件。 编写 .edmx 文件耗时 00:00:00.0008504。

从实体框架引擎生成的 sql 的最终输出如下:

C1 |C2 |C3 |C4 |C5 |C6 |C7 |C8 |C9 |C10 |C11

1 |APP |SP_TEST2 |NULL |0 |0 |0 |0 |ID |INTEGER |IN

如您所见,我得到了正确的输出,但不知道为什么以及哪个值导致了问题,因为我无法调试到最终的模型生成代码。如果您知道如何调试该部分,请告诉我。任何帮助将不胜感激。

我的表结构是这样的:CREATE APP.TEST2(ID INT PRIMARY KEY, NAME VARCHAR(50));

谢谢。

【问题讨论】:

  • 允许 Null 怎么样?对特定字段来说是对还是错
  • 你能把你的代码扔给我们看看吗?只需设置数据并将其保存到 EntityModel 的部分就足够了。
  • 由于Entity Framework引擎的这个pass返回Function和Stored proc的聚合,C4的值是Function返回类型。我知道 C5 用于 IsAggregate,C7 用于 IsBuiltIn,C8 用于 IsNiladic。这些仅用于功能。 C6 设置为零。对于存储过程,最后三个字段肯定很重要。运行 MySQL 实体框架也返回相同的输出,但它生成一个模型,但在我的情况下没有模型,但错误。与所有 .ssdl、.msl 和其他文件相比,除非我遗漏了什么,否则没有什么可怕的。有人在 MySQL .net 连接器中处理过这个问题吗?
  • @LeviFuller - 我不保存数据,一旦您从向导中选择存储过程并点击“完成”,自定义提供程序代码将生成 SQL 代码以发送到数据库。一旦发生这种情况,实体框架会执行一些我看不到或无法调试的处理,因为它们是实体框架代码,然后如果满足,它将生成模型。对于 Table 和 View 对象,它们按预期工作。我可以捕获 SQL 代码并自己在我的自定义 sql 数据库上运行它,并且可以看到上面的输出,这与 MySQL 或 SQL Server 正在生成的输出相同。生成的 SQL 300 行。

标签: c# sql entity-framework-4 ado.net-entity-data-model


【解决方案1】:

感谢大家的想法。我想到了。 C5 - C8 返回整数类型的值“0”。它们必须是 bool 类型。一旦我将类型更改为 bool,它就可以工作了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多