0

我有一个关于第一个对多个数据库实现实体代码的基本问题。我有两个模型,文章和评论是这样的:

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

    public virtual ICollection<Comment> Comments { get; set; }
....

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

    public virtual Article CommentForArticle { get; set; }

    public DateTime TimeStamp { get; set; 
....

如果我尝试将评论添加到数据库(使用包含文章的 Comment.CommentForArticle)评论被添加到数据库中,但文章的评论集合中不包含评论。

但是,如果我创建评论并将其添加到文章中,一切正常。我不必将评论添加到数据库中,它是自动添加的(我猜。)

我在尝试实现此问题后遇到问题(错误,例如:违反多重性约束)所以我的问题是,我现在这样做是否正确,为什么必须这样做,而不是将注释添加到 Db 而是添加到包含评论的文章。您能否分享任何可以帮助我更好地理解实体框架如何处理一对多和多对多关系的链接。

谢谢,加勒特

4

1 回答 1

1

如果存在“有”关系,我更愿意将新项目添加到所有者的收藏中。在你的情况下,Article Comments,所以我会在 article.Comments 中添加一个新的评论。

除了继承之外,“是”关系也是可能的。假设你有ArticleType实体和属性article.ArticleType。在这种情况下,我宁愿设置属性。我什ArticleType至不想拥有Articles导航属性。

在“纯”多对多的情况下(即当连接表未映射为其自己的实体类型时),除了将项目添加到所有者的集合中之外,别无选择。

目前尚不清楚你为什么有问题后出现问题。是因为你混合了这两种方法吗?(向数据库添加评论并在文章中添加相同的评论)。

作为参考:一系列精彩的文章从这里开始。它专注于更复杂的场景,但不难找到对常规案例的引用。

于 2012-04-24T20:28:24.523 回答