繁体   English   中英

Code First Entity Framework不会创建一对多关系

[英]Code First Entity Framework doesn't create one to many relationship

因此,我有一个班级(文章)应该与另一个班级(类别)具有一对多关系:

public class Article
{
  [Key]
  public int ArticleId { get; set;}

  public virtual List<Category> Categories { get; set; }
}

public class Category
{
  [Key]
  public int Id { get; set;}

  public string Caption { get; set;
}

当我使用Code First构建数据库时,它生成的类别与Article具有一对一的关系。 这导致类别仅与单个条款相关。 删除并重新创建数据库仍然会产生问题。 关于我在做什么错的任何想法吗?

1)如果您的Article有很多Category ,但是Categories只有一个Article

public class Article{
    private ICollection<Category> _CategoryList;
    public int ArticleId { get; set;}
    public virtual ICollection<Category> CategoryList {
        get { return _CategoryList = _CategoryList?? new HashSet<Category>(); }
        set { _CategoryList= value; }
    }
}

public class Category{
    public int Id { get; set;}
    public string Caption { get; set;}
    public Article Article { get; set;}
}

这对我来说听起来有点不合逻辑。

2)如果您的Category有很多Article ,而Article中只有一个Category

public class Article{
    public int ArticleId { get; set;}
    public Category Category { get; set;}
}

public class Category{
    private ICollection<Article> _ArticleList;
    public int Id { get; set;}
    public string Caption { get; set;}
    public virtual ICollection<Article> ArticleList {
        get { return _ArticleList= _ArticleList?? new HashSet<Article>(); }
        set { _ArticleList= value; }
    }
}

注意,如果属性名称中有关键字Id ,则不需要[Key] EF会自动将该属性视为Key

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM