Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

LINQ-to-Entities, Ambiguous Column Name with association between two views with the same column name

I am just getting into Entity Framework for the first time beyond simple examples.

I am using the model-first approach and am querying the data source with LINQ-to-Entities.

I have created an entity model that I am exposing as an OData service against a database where I do not control the schema. In my model, I have two entities that are based off of two views in this database. I've created an association between the two entities. Both views have a column with the same name.

I am getting the error:

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

If I was writing the SQL statement myself, I'd qualify one of the column names with an alias to prevent this issue. EF apparently isn't doing that. How do I fix this, short of changing the view? (which I cannot do) I think this does have something to do with these entities being mapped to views, instead of being mapped to actual tables.

like image 360
dotnetengineer Avatar asked Feb 08 '12 19:02

dotnetengineer


1 Answers

Assuming you can change the model have you tried going into the model and just changing one of the column names? I can still see how it might be problematic if the two views are pulling back the same column from the same table. I can tell that when working directly with a model mapped to tables, having identically named columns is not a problem. Even having multiple associations to the same table is handled correctly, the Navigation Properties are automatically given unique names. Depending on which version of EF you used you should be able to dig into the cs file either under the model or under the t4 template file and see what's going on. Then you can always create a partial class to bend it to your will.

like image 83
Tod Avatar answered Jan 03 '23 23:01

Tod