uri*_*rig 6 orm entity-framework
我有两个实体,其中一个与另一个有一对多的关系.例:
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; }
}
Run Code Online (Sandbox Code Playgroud)
使用EF6 Code First我已经设置了这个简单的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; }
}
Run Code Online (Sandbox Code Playgroud)
我最终在数据库中得到的是两个结构相似的表(int PK列和varchar列),并且没有表示"一个问题有很多答案"关系,我打算用Question.Answers属性.
为什么EF Code First没有映射关系,我该如何解决这个问题呢?
实体框架不支持裸阵列类型的映射导航属性.该属性必须是实现ICollection<T>接口才能映射的Type .
尝试更改您的代码,如下所示:
public class Question
{
public int Id { get; set; }
public string Text { get; set; }
public virtual ICollection<Answer> Answers { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
初始化时Answers,将其设置为HashSet或List:
this.Answers = new List<Answer>();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3220 次 |
| 最近记录: |