【发布时间】: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