繁体   English   中英

Linq-to-sql一次添加项目和一对多记录

[英]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.

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