LINQ-to-Entities,具有相同列名的两个 View 之间关联的不明确的列名

标签 linq entity-framework-4 ado.net

除了简单的示例之外,我才第一次进入 Entity Framework 。

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

我创建了一个实体模型,我将其作为 OData 服务公开,以针对我无法控制架构的数据库。在我的模型中,我有两个实体,它们基于此数据库中的两个 View 。我在两个实体之间创建了一个关联。两个 View 都有一个同名的列。

我收到错误:

Ambiguous column name 'columnname'. Could not use view or function 'viewname' because of binding errors.



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

最佳答案

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

关于LINQ-to-Entities,具有相同列名的两个 View 之间关联的不明确的列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9199787/

相关文章:

c# - 在 Linq 中按问题分组

使用存储库模式时的 MongoDB 和大型数据集

c# - EF4 ObjectContext.EntitySet.AddObject() 级联插入

c# - ADO.NET CommandBuilder、InsertCommand 和默认约束

c# - 使用 SqlCommand.ExecuteScalar() 从序列中选择在高磁盘使用率时返回 NULL

c# - 正则表达式不适用于 Linq to Sql

c# - 从多个单独列表中匹配 'pair up' 项目的最快非 LINQ 算法是什么?

asp.net-mvc - 为什么 EF4 试图重新创建我的数据库,即使模型没有改变?

c# - Entity Framework 4 Code First 是否支持像 NHibernate 这样的身份生成器?

c# - 我可以从同一列中选择多个值吗