2012-02-08 22 views
7

Acabo de entrar en Entity Framework por primera vez más allá de ejemplos simples.LINQ-to-Entities, Columna ambigua Nombre con asociación entre dos vistas con el mismo nombre de columna

Estoy utilizando el enfoque de primer modelo y estoy consultando la fuente de datos con LINQ-to-Entities.

He creado un modelo de entidad que estoy exponiendo como un servicio OData contra una base de datos donde no controlo el esquema. En mi modelo, tengo dos entidades basadas en dos vistas en esta base de datos. Creé una asociación entre las dos entidades. Ambas vistas tienen una columna con el mismo nombre.

estoy consiguiendo el error:

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

Si estaba escribiendo la instrucción SQL a mí mismo, me califico uno de los nombres de columna con un alias para evitar este problema. EF aparentemente no está haciendo eso. ¿Cómo soluciono esto, sin cambiar la vista? (lo cual no puedo hacer). Creo que esto tiene algo que ver con el hecho de que estas entidades estén asignadas a vistas, en lugar de asignarse a tablas reales.

+2

Publica un código. – cadrell0

+0

Por favor, aclare si está utilizando primero un modelo o código de diseñador. Si está utilizando el diseñador, esto debería resolverse fácilmente arrastrando ambas vistas a la superficie de diseño y agregando la relación. En el código primero, requeriría un poco más de trabajo. Además, ¿está consultando a través de Entity SQL o está utilizando LINQ to Entities? – jessehouwing

+0

@jessehouwing: No he tenido la oportunidad de recopilar el código para esto todavía. Espero que alguien se tropiece con él y genere una respuesta "Oh, he tenido ese problema antes". Acabo de agregar algo de información adicional a la pregunta. Estoy usando el primer enfoque modelo, y (como se especifica en el título) estoy usando LINQ para Entidades. – dotnetengineer

Respuesta

1

Suponiendo que puede cambiar el modelo, ¿ha intentado ingresar al modelo y simplemente cambiar uno de los nombres de las columnas? Todavía puedo ver cómo podría ser problemático si las dos vistas están retirando la misma columna de la misma tabla. Puedo decir que cuando se trabaja directamente con un modelo mapeado en tablas, tener columnas con el mismo nombre no es un problema. Incluso teniendo múltiples asociaciones a la misma tabla se maneja correctamente, a las propiedades de navegación se les asignan automáticamente nombres únicos. Dependiendo de la versión de EF que utilice, debería poder profundizar en el archivo cs, ya sea bajo el modelo o debajo del archivo de plantilla t4, y ver qué está sucediendo. Entonces siempre puedes crear una clase parcial para doblarla según tu voluntad.

Cuestiones relacionadas