[英]Linq-to-sql Add item and a one-to-many record at once
我有一个可以添加文章的功能,用户可以对它们发表评论。 这是通过一对多关系完成的,例如= "commentId=>ArticleId"
。 但是,当我尝试在将评论添加到多条记录的同时将评论添加到数据库时,commentId未知。 像这样的代码:
Comment comment = new Comment();
comment.Date = DateTime.UtcNow;
comment.Text = text;
comment.UserId = userId;
db.Comments.InsertOnSubmit(comment);
comment.Articles.Add(new CommentsForArticle() { ArticleId = articleId, CommentId = comment.CommentId });
在我按提交之前, commentId
将为0。 有什么办法角落找寻不必提交之间的或者我只需要切出一部分,我有一个一对多的关系,并且只使用一个CommentTable
与像一列"ArticleId"
。
从性能角度来看,什么是最好的?
我了解潜在的问题,我只想知道哪种解决方案最有效。
您在问两个不同的问题。
首先,如果注释只能用于一篇文章,那么从数据库设计的角度来看,在Comment
表中包含ArticleId
而不是创建链接表更为有意义。 中间链接表通常仅用于许多:许多关系,因为它们不能显式建模并且需要这种间接级别。
话虽如此,如果您正确定义了外键,那么Linq2SQL将检测到它们并允许您使用对象而不是键(或者您可以使用其中任何一个)。 例如,假设您按原样保留数据库设计,则最后一行可能是这样的:
comment.Articles.Add(new CommentsForArticle() { ArticleId = articleId, Comment = comment }
注意,我使用的是实际的Comment
对象,而不是其ID。 通过这种方式,Linq2SQL可以自动为您执行该映射。 如果您有实际文章的句柄,则也可以将ArticleId = articleID
替换为Article = article
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.