多对多连接 ID table - Entity Framework
Connecting Id's in many to many table - Entity Framework
我已经有很多标签,我已经有很多帖子。我只想 post 2 个 ID 并将这 2 个 ID 插入到我的多对多 table 中,以便链接 2 个记录。
我正在使用 Entity Framework 和 Fluent Api。
Table 1 个调用的标签,
Table 2 个名为帖子,
Table 3 个名为 TagsPosts
我的 TagsPosts table 有以下内容:
Tag_Id
Post_Id
我只想用这两个 ID 添加一条新记录,如下所示:
var entry = new TagPost()
{
Tag_Id = tagId,
Post_Id = postId
};
ApplicationDbContext.TagsPosts.Add(entry);
在我的上下文中,我有:
public class ApplicationDbContext
{
public DbSet<Tag> Tags{ get; set; }
public DbSet<Post> Posts{ get; set; }
public DbSet<TagPost> TagsPosts { get; set; }
}
我的流利API关系:
ToTable("Tags");
HasKey(t => t.Id);
HasMany(t => t.Posts).WithMany(p => p.Tags);
问题是当我尝试先使用代码添加迁移时出现错误:
EntityType 'TagPost' has no key defined. Define the key for this EntityType.
TagsPosts: EntityType: EntitySet 'TagsPosts' is based on type 'TagPost' that has no keys defined.
这是 TagPost 的样子:
public class TagPost
{
public int Tag_Id { get; set; }
public int Post_Id { get; set; }
}
我做错了什么?
如果您按照惯例映射此 M2M 关系,则不必包含您的 TagPost class。
modelBuilder.Entity<Tag>()
.ToTable("Tags")
.HasKey(t => t.Id)
.HasMany(t => t.Posts)
.WithMany(p => p.Tags)
.Map(cs =>
{
cs.MapLeftKey("Tag_Id");
cs.MapRightKey("Post_Id");
cs.ToTable("TagPost");
});
阅读此内容以获取更多信息:http://www.entityframeworktutorial.net/code-first/configure-many-to-many-relationship-in-code-first.aspx
编辑:
//get post object from context
var post = context.Posts.Find(postId);
//get tag object from context
var tag = context.Tags.Find(tagId);
//associate objects
post.Tags.Add(tag);
//commit to db
context.SaveChanges();
我已经有很多标签,我已经有很多帖子。我只想 post 2 个 ID 并将这 2 个 ID 插入到我的多对多 table 中,以便链接 2 个记录。
我正在使用 Entity Framework 和 Fluent Api。
Table 1 个调用的标签, Table 2 个名为帖子, Table 3 个名为 TagsPosts
我的 TagsPosts table 有以下内容:
Tag_Id
Post_Id
我只想用这两个 ID 添加一条新记录,如下所示:
var entry = new TagPost()
{
Tag_Id = tagId,
Post_Id = postId
};
ApplicationDbContext.TagsPosts.Add(entry);
在我的上下文中,我有:
public class ApplicationDbContext
{
public DbSet<Tag> Tags{ get; set; }
public DbSet<Post> Posts{ get; set; }
public DbSet<TagPost> TagsPosts { get; set; }
}
我的流利API关系:
ToTable("Tags");
HasKey(t => t.Id);
HasMany(t => t.Posts).WithMany(p => p.Tags);
问题是当我尝试先使用代码添加迁移时出现错误:
EntityType 'TagPost' has no key defined. Define the key for this EntityType.
TagsPosts: EntityType: EntitySet 'TagsPosts' is based on type 'TagPost' that has no keys defined.
这是 TagPost 的样子:
public class TagPost
{
public int Tag_Id { get; set; }
public int Post_Id { get; set; }
}
我做错了什么?
如果您按照惯例映射此 M2M 关系,则不必包含您的 TagPost class。
modelBuilder.Entity<Tag>()
.ToTable("Tags")
.HasKey(t => t.Id)
.HasMany(t => t.Posts)
.WithMany(p => p.Tags)
.Map(cs =>
{
cs.MapLeftKey("Tag_Id");
cs.MapRightKey("Post_Id");
cs.ToTable("TagPost");
});
阅读此内容以获取更多信息:http://www.entityframeworktutorial.net/code-first/configure-many-to-many-relationship-in-code-first.aspx
编辑:
//get post object from context
var post = context.Posts.Find(postId);
//get tag object from context
var tag = context.Tags.Find(tagId);
//associate objects
post.Tags.Add(tag);
//commit to db
context.SaveChanges();