LinkTable上的两个一对多关联

时间:2011-11-29 13:13:21

标签: asp.net-mvc entity-framework-4.1 fluent-interface

我有一个名为的BlogTable:BlogsBlogPosts,它将两个名为:Blogs和BlogPosts的表联系在一起,我希望链接表出现在实体列表中,并且在链接表上定义了两个一对多的关系我正确像这样定义它?:

public class BlogsBlogPostConfiguration : EntityTypeConfiguration<BlogsBlogPost>
{
    public BlogsBlogPostConfiguration()
    {
        this.HasRequired(bb => bb.Blog)
        .WithMany(b => b.BlogsBlogPosts)
        .HasForeignKey(bb =>bb.BlogID);

        this.HasRequired(bb => bb.BlogPost)
       .WithMany(bp => bp.BlogsBlogPosts)
       .HasForeignKey(bb => bb.BlogPostID);
    }
}

1 个答案:

答案 0 :(得分:0)

是。对我而言,唯一的问题是:BlogsBlogPost的主要关键属性是什么?两个选项:

  • 您要么在此实体中拥有明确的关键属性,例如public int BlogsBlogPostID { get; set; }public int ID { get; set; }。在这种情况下,(BlogIDBlogPostID)的组合不必是唯一的。

  • 或者您有一个由(BlogIDBlogPostID)组成的复合键。您必须使用[Key]注释对其进行标记,或者在Fluent API中对其进行定义:

    this.HasKey(bbp => new { bbp.BlogID, bbp.BlogPostID });
    

    现在(BlogIDBlogPostID)的组合必须是唯一的。这更像是“与链接表”类型关系中的其他数据的“多对多关系”。

两种型号都是可能的。使用哪种方法取决于您的业务需求。