在EF流利映射中设置一对多关系

时间:2014-05-11 14:01:27

标签: entity-framework

我有两个这样的课程,

public class Post
{
   public int Id { get; set; }

   public virtual Category Category { get; set; }
}

public class Category
{
   public int Id { get; set; }

   public virtual IList<Post> Posts { get; set; }
}

BlogDbContext.cs

OnModelCreating方法:

modelBuilder.Entity<Post>()
                  .HasRequired(x => x.Category)
                  .WithMany(x => x.Posts)
                  .HasForeignKey(x => x.Id);

在运行应用程序时,我收到以下错误。

Post_Category_Source ::多重性在角色&#39; Post_Category_Source&#39;中无效。在关系&#39; Post_Category&#39;。由于“从属角色”是指关键属性,因此“从属角色”的多重性的上限必须为“&#39;

任何帮助都将非常感激。

1 个答案:

答案 0 :(得分:1)

如果仔细观察声明......

HasForeignKey(x => x.Id)

...您会发现x不是Category而是Post。因此,它尝试将Post的主键用作指向Category的外键。这是一个有效的配置,但仅限于1-1个关联,因此有点神秘的异常消息。

这就是你之后的事情:

public class Post
{
    public int Id { get; set; }
    public int CategoryId { get; set; }
    public virtual Category Category { get; set; }
}

public class Category
{
    public int Id { get; set; }
    public virtual ICollection<Post> Posts { get; set; }
}

modelBuilder.Entity<Post>()
              .HasRequired(x => x.Category)
              .WithMany(x => x.Posts)
              .HasForeignKey(x => x.CategoryId);