Tom
Tom

Reputation: 71

Entity framework not creating join table

I will appreciate if somebody can tell me why entity framework is not creating join table for following model. It is creating table for type and feature but not the table that will join them.

public class DeviceType
    {
        [Display(Name = "ID")]
        public int DeviceTypeID { get; set; }
        public string Name { get; set; }
        public string Description { get; set; }

        public IEnumerable<DeviceFeature> DeviceFeatures { get; set; }
    }

    public class DeviceFeature
    {
        [Display(Name = "ID")]
        public int DeviceFeatureID { get; set; }

        [Required]        
        public string Name { get; set; }
        public string Description { get; set; }

        public IEnumerable<DeviceType> DeviceTypes { get; set; }

    }

    public class DeviceFeatureView
    {
        public virtual IEnumerable<DeviceType> DeviceTypes { get; set; }
        public virtual IEnumerable<DeviceFeature> DeviceFeatures { get; set; 
    }

Upvotes: 1

Views: 1075

Answers (1)

CodingYoshi
CodingYoshi

Reputation: 27009

You do not need the bridge to create a many-to-many relationship. EF will figure it out. Change the type of the navigation properties from IEnumerable to ICollection like this:

public class DeviceType
{
    public DeviceType() 
    {
        this.DeviceFeatures = new HashSet<DeviceFeature>();
    }
    [Display(Name = "ID")]
    public int DeviceTypeID { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }

    public ICollection<DeviceFeature> DeviceFeatures { get; set; }
}

public class DeviceFeature
{
    public DeviceFeature() 
    {
        this.DeviceTypes = new HashSet<DeviceType>();
    }   
    [Display(Name = "ID")]
    public int DeviceFeatureID { get; set; }

    [Required]        
    public string Name { get; set; }
    public string Description { get; set; }

    public ICollection<DeviceType> DeviceTypes { get; set; }

}

More about it here.

Upvotes: 1

Related Questions