2009-08-12 6 views
0

Quelqu'un connaît-il un exemple d'implémentation plusieurs-à-plusieurs correcte dans Linq-to-Sql? Habituellement, j'utilise une entité intermédiaire (par exemple CustomerProducts) dans DataContext, et la joint à chaque requête. L'idée est de cacher l'entité intermédiaire au niveau de l'objet en ajoutant des propriétés personnalisées aux classes partielles - utiliser des collections comme IEnumerabe Customer.Products et IEnumerable Product.Customers dans chaque requête, mais je ne peux pas écrire de code qui sera traduit correctement en SQL dans une sous-requête.Implémentation many-to-many dans linq-to-sql

cela devrait être utilisé tel ou de façon similaire:

int ProductID = 555; 
Customers.Where(customer=>customer.Products.Any(product=>product.Id == productID)); 

tous dans le niveau SQL, bien sûr. Ou peut-être que quelque chose me manque et que ce n'est pas une bonne façon de le faire?

UPD. Je cherche un moyen de se débarrasser de l'entité intermédiaire par une manipulation SQL. Bien sûr, je peux emballer le code existant.

Répondre

1

Je n'ai pas testé cela, mais le problème est peut-être que vous cherchez à utiliser IEnumerable, plutôt que IQueryable?

suggère d'essayer ce qui suit:

public partial class Customer 
{ 

    public IQueryable<Order> Orders 
    { 
    get 
    { 
     return this.CustomerOrders.Select(co => co.Order); 
    } 
    } 
}