Un procedimiento almacenado simple que quiero manejar con LINQ lugar:consulta LINQ en EF - muchos a muchos y una combinación cruzada
SELECT
CASE WHEN mg.MovieID IS NULL THEN 0 else 1 end as Selected ,
g.genreID, g.GenreName
FROM dbo.Genres g LEFT JOIN
(
SELECT MovieID, GenreID FROM [dbo].[MovieGenre] m
WHERE m.MovieID = @Movie
) MG
ON g.[GenreID] = mg.[GenreID]
ORDER BY g.GenreName
creo que esto debería ser simple y creo que sería un requisito común , sin embargo, no puedo resolverlo ni he encontrado una solución mediante la búsqueda en la web.
La aplicación está respaldada por WPF con un modelo EF. Como EF oculta la tabla de unión, necesito la sintaxis de LINQ que puede manejar la ausencia de la tabla de intermediarios.
Classic many-to-many con una tabla de unión simple: tabla 1: Películas, tabla 2: Géneros, Unirse a la tabla: MovieGenres. En la interfaz de usuario, el usuario selecciona una película específica. Para esa película, quiero traer TODOS los géneros y un valor bool que indique si el género ha sido asignado a la película. Las horas de intento de esto en LINQ me han fallado, así que la solución es que el procedimiento almacenado anterior genere los valores para mí. No siempre seré capaz de hacer esto con un procedimiento almacenado y me encantaría ver una solución LINQ.
Aquí está el SQL real estructuras de la tabla
CREATE TABLE [dbo].[Genres](
[GenreID] [int] IDENTITY(1,1) NOT NULL,
[GenreName] [nvarchar](15) NOT NULL,
CONSTRAINT [PK_Genres] PRIMARY KEY CLUSTERED
(
[GenreID] ASC
)) ON [PRIMARY]
GO
CREATE TABLE [dbo].[Movies](
[MovieID] [int] IDENTITY(1,1) NOT NULL,
[MovieTitle] [nvarchar](50) NOT NULL,
CONSTRAINT [PK_Movies] PRIMARY KEY CLUSTERED
(
[MovieID] ASC
))
ON [PRIMARY]
GO
CREATE TABLE [dbo].[MovieGenre](
[MovieID] [int] NOT NULL,
[GenreID] [int] NOT NULL,
CONSTRAINT [PK_MovieGenre] PRIMARY KEY CLUSTERED
(
[MovieID] ASC,
[GenreID] ASC
)) ON [PRIMARY]
GO
ALTER TABLE [dbo].[MovieGenre] WITH CHECK ADD CONSTRAINT [FK_Genres] FOREIGN KEY([GenreID])
REFERENCES [dbo].[Genres] ([GenreID])
GO
ALTER TABLE [dbo].[MovieGenre] CHECK CONSTRAINT [FK_Genres]
GO
ALTER TABLE [dbo].[MovieGenre] WITH CHECK ADD CONSTRAINT [FK_Movies] FOREIGN KEY([MovieID])
REFERENCES [dbo].[Movies] ([MovieID])
GO
ALTER TABLE [dbo].[MovieGenre] CHECK CONSTRAINT [FK_Movies]
GO
El problema es que esto es Entity Fram ework, entonces la tabla/entidad MovieGenres NO existe en el contexto. EF oculta la tabla de unión. Por lo tanto, necesito una solución que haga frente a la ausencia de MovieGenres – TWDuke
¡Su código LINQ funciona muy bien en LINQ to SQL! Gracias – TWDuke
@TWDuke - Bien, pero tiene que mostrarnos su modelo de entidad. Mostrar las estructuras de la tabla sql no ayuda – Aducci