I have the following model
public class PageConfig : Base
{
// Properties Etc..
public ICollection<Image> ScrollerImages { get; set; }
}
My approach is to bind using a junction table { PageConfigID, ImageID }.
In my model binder i tried the following..
modelBuilder.Entity<PageConfig>()
.HasMany(x => x.ScrollerImages)
.WithMany()
.Map(x =>
{
x.ToTable("junc_PageConfigScrollerImages");
x.MapLeftKey("PageConfigID");
x.MapRightKey("ImageID");
});
Which results in a null collection of images.
How can i bind these Images to the PageConfig model?
EDIT
Most of the problem was due to user error. jic this happens to you..
Check that the key constraints in the database are correctly set.
The ICollection on the model NEEDS to be virtual.
If you want to create an one-to-many relationship between those two entities your model would be like this:
And the Fluent Api configuration would be:
If you idea is create an unidirectional one-to-many relationship then delete the FK and the navigation property on
Image
entity and configure the relationship this way:Check this link for more info about this kind of relationship
Per http://www.entityframeworktutorial.net/code-first/configure-one-to-many-relationship-in-code-first.aspx:
"...you can use Fluent API to configure a One-to-Many relationship using Student entity classes as shown below."
"...Use HasOptional method instead of HasRequired method to make foreign key column nullable."
So you'd be looking for something like this: