¿Es posible definir una relación muchos a muchos en Entity Framework 4.1 (primer enfoque de código) usando solo anotaciones de datos, sin el generador de modelos?Primer código de Entity Framework 4.1: defina many-to-many utilizando anotaciones de datos solamente
Por ejemplo, algo como:
Product = { Id, Name, ... }
Category = { Id, Name, ... }
ProductCategory = { ProductId, CategoryId }
se obtiene la imagen.
No quiero tener una entidad intermedia ProductCategory
en el contexto con dos varios, ya que no tengo ningún dato adicional, solo los dos FK. Además, debería ser capaz de definir el nombre de la tabla para la tabla intermedia para su uso con una base de datos existente.
Gracias, hice lo que sugirió, pero aún no funciona. Por alguna razón, recibo una excepción 'Nombre de columna inválido 'Category_Id'. \ R \ nNombre de columna inválido 'Product_Id'' cuando intento evaluar' product.Categories'. Esto es solo mediante convención, es decir, sin anotaciones ni API fluidas. Mi tabla de base de datos 'ProductsCategories' tiene' ProductId' y 'CategoryId' sin el guión bajo en el medio. ¿Por qué el guión bajo? No está documentado en ninguna parte como una convención AFAIK. EF4.1 no necesita guiones bajos para las relaciones 1-M y M-1 (al menos no está documentado). –
Product_Id y Category_Id son nombres predeterminados. Si tiene una base de datos existente y tiene diferentes nombres, debe usar el generador de modelos para mapear correctamente la relación con su propia tabla. –
Tienes razón. Sin embargo, en otro lugar donde se usan relaciones 1-M, se espera el campo FK * sin * el guión bajo (es decir, 'ProductId'). Eso no tiene sentido**. De hecho, eso significa que si luego agrego otro campo a la tabla intermedia de ProductCategories ("Ord" por ejemplo) se convertirá en una entidad verdadera, y luego la convención se quejará de que no puede encontrar el campo "ProductId". –