LINQ到实体,不明确的列名称,具有相同列名的两个视图之间的关联

时间:2012-02-08 19:06:10

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

我刚刚进入Entity Framework第一次超越简单的例子。

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

我创建了一个实体模型,我将其作为OData服务暴露给数据库,我无法控制模式。在我的模型中,我有两个基于此数据库中两个视图的实体。我在两个实体之间创建了一个关联。两个视图都有一个同名的列。

我收到错误:

  

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

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

1 个答案:

答案 0 :(得分:1)

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