【问题标题】:LINQ-to-Entities, Ambiguous Column Name with association between two views with the same column nameLINQ-to-Entities,不明确的列名,具有相同列名的两个视图之间的关联
【发布时间】:2012-02-08 19:06:10
【问题描述】:

我只是第一次接触到实体框架而不是简单的例子。

我正在使用模型优先方法并使用 LINQ-to-Entities 查询数据源。

我创建了一个实体模型,我将其作为 OData 服务公开给我不控制架构的数据库。在我的模型中,我有两个实体,它们基于该数据库中的两个视图。我已经在两个实体之间创建了关联。两个视图都有一个同名的列。

我收到错误:

不明确的列名“列名”。由于绑定错误,无法使用视图或函数“viewname”。

如果我自己编写 SQL 语句,我会使用别名限定其中一个列名以防止出现此问题。 EF 显然没有这样做。除了改变视图,我该如何解决这个问题? (我不能这样做)我认为这确实与将这些实体映射到视图而不是映射到实际表有关。

【问题讨论】:

  • 请先说明您使用的是设计器模型还是代码。如果您使用的是设计器,只需将两个视图拖到设计图面上并添加关系即可轻松解决。在代码中,它需要更多的工作。另外,您是通过 Entity SQL 查询还是使用 LINQ to Entities?
  • @jessehouwing:我还没有机会为此收集代码。我希望有人可能会偶然发现它并产生“哦,我以前遇到过这个问题”的回应。我刚刚为这个问题添加了一些额外的信息。我正在使用模型优先方法,并且(如标题中所述)我正在使用 LINQ to Entities。
  • @dotnetengineer,我很抱歉,但我以前没有遇到过这个问题,想想看,我们使用的实体使用了同名的列,没有任何问题。你能显示视图定义(SQL)吗?或者至少是select [column names here]

标签: linq entity-framework-4 ado.net


【解决方案1】:

假设您可以更改模型,您是否尝试过进入模型并仅更改其中一个列名?如果两个视图从同一个表中拉回同一列,我仍然可以看到它可能会出现问题。我可以说,当直接使用映射到表的模型时,具有相同名称的列不是问题。即使正确处理同一个表的多个关联,导航属性也会被自动赋予唯一的名称。根据您使用的 EF 版本,您应该能够在模型下或 t4 模板文件下挖掘 cs 文件,看看发生了什么。然后,您始终可以创建一个部分类来使其符合您的意愿。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-08
    相关资源
    最近更新 更多