所以我有一个类(文章)应该与另一个类(类别)有一对多的关系:
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具有一对一关系的Category。这导致类别仅与单个文章相关。删除并重新创建数据库仍会产生问题。关于我做错了什么的任何想法?
答案 0 :(得分:2)
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; }
}
}
注意,如果属性名称中有关键字[Key]
,则不需要Id
。 EF会自动将该属性视为Key
。