Search code examples
entity-framework-4code-firstef4-code-onlyctp4ef-code-first

Code-First: How to create a many to many relationship where the source class/table is the target one as well?


Can someone please post an example on how to create a many to many relationship where the source class is also the target one, using code-first ?

Something like:

Toys * <-----> * Toys

Thank you.

Nuno Senica


Solution

  • I don't think this is possible with EF Code First. As a workaround, you could create the mapping table yourself:

    public Toy
    {
        public int ToyID {get; set;}
        public ICollection<ToyMapping> Toys {get; set;}
    }
    
    public ToyMapping
    {
        public int ToyOneID {get; set;}
        public int ToyTwoID {get; set;}
    
        public ICollection<Toy> ToyOnes {get; set;}
        public ICollection<Toy> ToyTwos {get; set;}
    }
    

    I'm not sure the actual use-case for this is, otherwise I would have made better named properties.