Entity Framework: Why is a property of type array of objects not persisted to DB?

entity-framework, orm

Solution

Entity Framework doesn't support mapping navigation properties of bare Array types. The property has to be of Type that implements the `ICollection<T>` interface in order to be mapped.

Try to change your code as follows:

public class Question
{
    public int Id { get; set; }
    public string Text { get; set; }
    public virtual ICollection<Answer> Answers { get; set; }
}

And when initializing `Answers`, set it to a `HashSet` or `List`:

this.Answers = new List<Answer>();

Problem

I have two entities where one has a one to many relationship to the other. Example: ``` public class Question { public int Id { get; set; } public string Text { get; set; } public Answer[] Answers { get; set; } } public class Answer { public int Id {get; set; } public string Text { get; set; } } ``` Using EF6 Code First I've setup this simple DbContext: ``` public class MyContext : DbContext { public MyContext() { Database.SetInitializer<MyContext>(new DropCreateDatabaseAlways<MyContext>()); } public DbSet<Question> Questions { get; set; } public DbSet<Answer> Answers { get; set; } } ``` What I end up with in the DB are two similarly structured tables (int PK column and varchar column) and no representation of the "one Question has many Answers" relationship that I intended with the Question.Answers property. Why doesn't EF Code First map the relationship and how can I fix this?

Original source