2011-09-25 12 views
6

enter image description hereMarco de la entidad intentar recuperar la columna inexistente

Estoy tratando de recuperar los elementos VideoCollection de la base de datos, pero conseguir {"Invalid column name 'User_Id'."} - cuando me puse un punto de interrupción puedo ver que la EF está tratando de seleccionar la columna User_Id pero no existe en el objeto Cs o en el esquema de la base de datos. (Sí existe en otra mesa, pero eso no debería importar). ¿Hay alguna forma de depurar por qué está sucediendo esto?

Respuesta

9

¿Tiene una clase de usuario que tenga una referencia a una colección de video? Si es así, probablemente necesite definir explícitamente la relación entre los dos. Tal como está, parece que EF está infiriendo que VideoCollection debe contener una clave externa, User_Id que define la relación.

+0

Ya casi está allí, tengo una tabla intermedia PurchasedCollections, que tiene UserId y VideoCollectionId (ambas como claves foráneas). Esto debería definir la relación explícitamente? Eliminé este intermediario de los objetos Cs y en el DbContext (ya que nunca tendría que acceder directamente). ¿Podría esto haber causado el problema? – greenimpala

+2

@ st3 necesita cambiar el nombre de la tabla a User_VideoCollections o anular 'OnModelCreating' y establecer explícitamente la conexión a través de la tabla' PurchasedCollections'. Las convenciones EF (código primero) esperan que tenga una relación FK directa o una tabla join utilizando los nombres de las entidades. Si se desvía de eso, necesita decirle cómo hacer la conexión. Algo así como 'constructor.Entidad () .HasMany (u => u.Collections) .WithRequired(). ToTable (" PurchasedCollections ");' – tvanfosson

+0

esto parece haber funcionado, gracias. ¿Estás diciendo que se debe declarar una relación de muchos a muchos con esta convención de denominación (a menos que definas explícitamente la relación?). – greenimpala

Cuestiones relacionadas