我有一个多对多关系定义如下:
public class Post
{
//NOT SHOWN: Other properties
public virtual ICollection<Tag> Tags { get; set; }
}
我看到的所有示例都会添加到多对多关系中,如下所示:
//Get the tag with ID of 1
var tag = context.Tags.Find(1);
// associate tag with ID of 1 with myPost
myPost.Tags.Add(tag);
但如果我只知道我想与我的帖子关联的标签的 id,这似乎很乏味/低效。
理想情况下,我只想公开一个List<int> TagIds
在我的 Post 实体上,并能够通过将标签 Id 添加到列表来添加标签,但我无法确定是否可以使用 EF Code First 来实现这一点。
底线:鉴于我只有想要关联的实体的 ID,将项目添加到多对多关系的最佳方法是什么。 (例如,如果我有一个标签 ID 列表,将这些标签与帖子相关联的最佳方式是什么?)
使用这样的代码:
// Existing post without loading it from the database
var myPost = new Post() { Id = ... };
context.Posts.Attach(post);
// For each id of existing tag
foreach (int tagId in someExistingTagIds)
{
var tag = new Tag() { Id = tagId };
context.Tags.Attach(tag);
// Make a new relation
post.Tags.Add(tag);
}
context.SaveChanges();
这将允许您在现有实体上创建 M-N 关系,而无需从数据库加载任何内容。您只需要知道现有实体的 ID。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)