实体一对多Db

问题描述:

我有一个关于实现实体代码第一个到多个分贝的基本问题。我有两个型号,文章和评论是这样的:实体一对多Db

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中,而是添加到包含评论的文章中。你能分享任何链接,以帮助我更好地理解实体框架如何与一对多和多对多的关系共同工作。

感谢, 加勒特

+1

两种方式都应该有效,但是如果没有看到您使用的实际代码,很难说出发生了什么。 – 2012-04-24 04:27:42

+0

这就是我的想法,我不知道什么是最初的错误,我做了这样的其他项目,从来没有问题。唯一的区别是这个项目使用了不同版本的实体框架,然后是我以前做过的。 (不知道什么版本导致我不在工作。) – 2012-04-24 04:35:47

我宁愿增加新项目业主的集合,如果有一个“有”关系。在你的情况,ArticleComment S,所以我想补充一个新的注释article.Comments。

的“是” relationsip,不是继承等,也是可能的。假设你有ArticleType个实体和一个属性article.ArticleType。在这种情况下,我宁愿设置属性。我甚至不喜欢ArticleType有一个Articles导航属性。

在的情况下,“纯”多到多(即,当连接表没有被映射为它自己的实体类型)没有其他选择,将项目添加到所有者的集合。

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

作为参照:一个伟大的系列文章开始here。它侧重于更复杂的情况,但对常规情况的引用不难找到。

+0

我不知道为什么我一直存在这么多问题,但最终我确实混合了这两种方法,我认为这是当我得到“违反多重约束”错误。谢谢,我想我现在对它有很好的把握。 – 2012-04-25 05:46:27