【问题标题】:When using Entity Framwork 4.1 for Oracle, long column names create errors使用 Entity Framework 4.1 for Oracle 时,长列名会产生错误
【发布时间】:2012-03-06 00:54:34
【问题描述】:

我有两个表,其中有一列同名,最大长度为 30。 当我在 linq 中使用这两个表的连接查询它时,实际生成的 SQL(顺便说一下相当大)使用“AS”关键字来区分它们,称它们为 {long_column_name}1 和 {long_column_name}2。

当这种情况发生时,别名的长度实际上是 31,这会导致 ORA-00972 错误:标识符对于别名来说太长了!

这显然是 SQL 生成过程中的某种错误。

有人知道解决方法吗? 因为我无法重命名列,所以我现在要做的是创建两个没有这些列的视图,但这不是一个理想的解决方案。

【问题讨论】:

  • 您能否发布一个生成有问题查询的 linq 语句示例?我想知道的是长列名是否在 select、join 子句等中。
  • 有趣的是,如果那来自 MS。他们应该做 colname || 的 substr编号。
  • 您尝试过 Oracle 的 odp.net w/ 实体框架支持吗?我没有,但请看这里:oracle.com/technetwork/issue-archive/2011/11-sep/…
  • @tbone - 这就是我正在使用的。我相信他们就是有这个错误的人。

标签: sql oracle entity-framework entity-framework-4.1


【解决方案1】:

在我看来,您几乎得到了我要建议的解决方案。与其创建省略列的视图,不如创建一个包含列的视图,但使用该视图将这些列重命名为更短的名称。

希望对您有所帮助。

【讨论】:

  • 我最终简化了查询。这个查询是合理的,我认为您的解决方案也应该有效。
【解决方案2】:

Here 是具有匹配问题的 Oracle 数据提供者论坛。在链接中确认是他们正在处理的内部错误。目前,他们说重命名表中的列,这在大多数情况下都不太理想。我会尝试映射到具有重命名的较短列的视图

【讨论】:

    猜你喜欢
    • 2018-07-08
    • 1970-01-01
    • 1970-01-01
    • 2011-09-05
    • 2010-10-28
    • 1970-01-01
    • 2011-11-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多