Kev*_*ger 26 entity-framework ef-code-first
我有一个像这样定义的多对多关系:
public class Post
{
//NOT SHOWN: Other properties
public virtual ICollection<Tag> Tags { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我看到的所有例子都会增加这样的多对多关系:
//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);
Run Code Online (Sandbox Code Playgroud)
但是,如果我只知道要与帖子关联的标签的ID,这似乎是单调乏味/低效的.
理想情况下,我只想List<int> TagIds在我的Post实体上公开一个并且能够通过将Tag Ids添加到列表中来添加标签,但是我一直无法确定使用EF Code First是否可行.
结论:鉴于我只是想要关联的实体的ID,所以将项目添加到多对多关系的最佳方式是什么.(例如,如果我有一个标签ID列表,那么将这些标签与帖子联系起来的最佳方式是什么?)
Lad*_*nka 46
使用这样的代码:
// 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();
Run Code Online (Sandbox Code Playgroud)
这将允许您在现有实体上创建MN关系,而无需从数据库加载任何内容.您只需要知道现有实体的ID.
| 归档时间: |
|
| 查看次数: |
5914 次 |
| 最近记录: |