m:n in Entity Framework

06/05/2009 - 08:21 von Andreas Schmidt | Report spam
Hallo,

ich habe eine m:n Beziehung in der Datenbank:
Products - Product_mn_Category - ProductCategories

Als Ergebnis möchte ich eine Liste ALLER Categories und zusàtzlich eine
Spalte "ProductInCategory", die mir für jede Kategorie anzeigt, ob sie dem
angegebenen Produkt zugeordnet ist. In SQL sieht das wir folgt aus:

SELECT IDProductCategory, (CASE WHEN
(SELECT COUNT(IDProduct)
FROM Product_mn_Category
WHERE (IDProduct = 59) AND
(IDProductCategory = ProductCategories.IDProductCategory)) > 0 THEN - 1 ELSE
0 END) AS ProductInCategory,
ProductCategory
FROM dbo.ProductCategories
ORDER BY ProductInCategory, ProductCategory

Ergebnis sollte so aussehen:
IDProductCategory ProductInCategory ProductCategory
5 -1
Cat-A
4 -1
Cat-C
3 0
Cat-B

Wie wàre nun die Entsprechung in LINQ to Entities? Die m:n Tabelle ist ja im
Model nicht wirklich zugreifbar?

Danke für Hinweise
Andreas
 

Lesen sie die antworten

#1 Andreas Schmidt
06/05/2009 - 10:43 | Warnen spam
Hallo nochmal,

"Andreas Schmidt" schrieb im Newsbeitrag
news:
Hallo,

ich habe eine m:n Beziehung in der Datenbank:
Products - Product_mn_Category - ProductCategories

Als Ergebnis möchte ich eine Liste ALLER Categories und zusàtzlich eine
Spalte "ProductInCategory", die mir für jede Kategorie anzeigt, ob sie dem
angegebenen Produkt zugeordnet ist. In SQL sieht das wir folgt aus:

SELECT IDProductCategory, (CASE WHEN
(SELECT COUNT(IDProduct)
FROM Product_mn_Category
WHERE (IDProduct = 59) AND
(IDProductCategory = ProductCategories.IDProductCategory)) > 0 THEN - 1
ELSE 0 END) AS ProductInCategory,
ProductCategory
FROM dbo.ProductCategories
ORDER BY ProductInCategory, ProductCategory

Ergebnis sollte so aussehen:
IDProductCategory ProductInCategory ProductCategory
5 -1 Cat-A
4 -1 Cat-C
3 0 Cat-B

Wie wàre nun die Entsprechung in LINQ to Entities? Die m:n Tabelle ist ja
im Model nicht wirklich zugreifbar?



hab jetzt der m:n Tabelle eine Dummyspalte verpasst. dadurch ist sie im
Model zugreifbar und es funktioniert.
Das ist ein Weg. Wàre es auch anders gegangen?

Gruß
Andreas

Ähnliche fragen