LINQ-to-Entities,具有相同列名称的两个视图之间的关联不明确的列名称
问题描述:
我刚刚进入实体框架第一次超出简单的例子。LINQ-to-Entities,具有相同列名称的两个视图之间的关联不明确的列名称
我正在使用模型优先的方法,并用LINQ-to-Entities查询数据源。
我已经创建了一个实体模型,我将其作为OData服务公开为一个数据库,我不控制模式。在我的模型中,我有两个基于该数据库中两个视图的实体。我已经创建了两个实体之间的关联。两个视图都有一个同名的列。
我收到错误:
Ambiguous column name 'columnname'. Could not use view or function 'viewname' because of binding errors.
如果我在写SQL语句我自己,我会限定列名的一个用别名来避免这个问题。 EF显然没有这样做。我如何解决这个问题,改变视图? (我不能这样做)我认为这与这些实体映射到视图有关,而不是映射到实际表。
答
假设您可以更改模型,您是否试过进入模型并更改其中一个列名称?如果两个视图从同一个表中拉回同一列,我仍然可以看到它可能有问题。我可以说,直接使用映射到表的模型时,具有相同名称的列不是问题。即使对同一个表的多个关联处理正确,导航属性也会自动给出唯一名称。根据您使用的EF版本,您应该能够在模型下或t4模板文件下挖掘cs文件,并查看发生了什么。然后,您可以随时创建一个部分课程以将其弯曲成您的意愿。
发表一些代码。 – cadrell0 2012-02-10 20:23:17
请澄清,如果您使用的设计师模型或代码第一。如果您使用的是设计师,只需将两个视图拖放到设计图面上并添加关系即可轻松解决问题。在代码中,它需要更多的工作。 另外,你是通过实体SQL查询还是使用LINQ to Entities? – jessehouwing 2012-02-14 21:11:57
@jessehouwing:我还没有机会为此收集代码。我希望有人可能会偶然发现它,并产生一个“哦,我有这个问题之前”的回应。我刚刚为这个问题添加了一些额外的信息。我正在使用模型第一种方法,并且(如标题中所述)我正在使用LINQ to Entities。 – dotnetengineer 2012-02-14 21:26:15