I have the following model
public class PageConfig : Base
{
// Properties Etc..
public ICollection ScrollerImages { get; set; }
}
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."
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
//one-to-many
modelBuilder.Entity<Student>()
.HasRequired<Standard>(s => s.Standard)
.WithMany(s => s.Students)
.HasForeignKey(s => s.StdId);
}
"...Use HasOptional method instead of HasRequired method to make foreign key column nullable."
So you'd be looking for something like this:
modelBuilder.Entity<Image>()
.HasOptional<PageConfig>(x => x.PageConfig)
.WithMany(x => x.ScrollerImages)
.HasForeignKey(x => x.PageConfigId)
If you want to create an one-to-many relationship between those two entities your model would be like this:
public class PageConfig
{
public int Id {get;set;}
//navigation property
public ICollection<Image> ScrollerImages {get;set;}
}
public class Image
{
public int Id {get;set;}
//FK
public int? PageConfigId {get;set;}
//navigation property
public PageConfig PageConfig {get;set;}
}
And the Fluent Api configuration would be:
modelBuilder.Entity<Image>()
.HasOptional(i=>i.PageConfig)
.WithMany(pc=>pc.ScrollerImages)
.HasForeignKey(i=> i.PageConfigId);
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:
modelBuilder.Entity<PageConfig>()
.HasMany(pc => pc.ScrollerImages)
.WithOptional();
Check this link for more info about this kind of relationship