【发布时间】:2011-03-09 16:05:45
【问题描述】:
我正在使用 Entity Framework 处理 PostgreSql DB: 当我将新项目添加到数据库中时,它会生成奇怪的代码:
INSERT INTO (SELECT "person_contact"."person_id" AS "person_id",
"person_contact"."contact_id" AS "contact_id"
FROM "public"."person_contact" AS "person_contact")
("person_id","contact_id")
VALUES (cast(141792 as int8),cast(289406040 as int8))
所以加了
SELECT "person_contact"."person_id" AS "person_id",
"person_contact"."contact_id" AS "contact_id"
FROM "public"."person_contact" AS "person_contact"
而不是表名“public”。“person_contact”
如何解决这个实体框架错误???
UPD:当我尝试删除“person_contact”条目时出现同样的问题。在删除语句而不是表名中 - 选择查询。
【问题讨论】:
-
EF 不生成 SQL。您的 PostgreSQL 提供程序可以。和写这篇文章的人谈谈。
-
我正在使用 NPgsql 提供程序。我认为这个问题更多地与 EF 相关而不是提供者,因为它只发生在这张表上。对于另一个表,它可以工作。
-
我再重复一遍:EF 不生成 SQL。
-
可能是我没有正确理解 EF 架构,但是按照 MSDN 中的这张图片,EF 构建命令树。基于其形成使用 ADO.NET 数据提供程序的 SQL 代码。但这没关系。我在通过 Npgsql 提供程序和 EF 生成 SQL 代码时遇到问题。
-
你能把你生成这个 SQL 的代码写下来吗?没有看到这一点,很难理解为什么会生成这些错误的查询......
标签: c# sql entity-framework postgresql