Entity Framework数据迁移(Migrations)新增多对多关系,为什么如下代码不生成中间表?
数据库中有一张Blog
表,还有一张Tag
表,它们有各自属性。而一开始生成数据库而是直接通过EF生成的,也没有做过数据迁移。
现在希望把Blog
和Tag
进行多对多关系进行关联,由于线上数据库应用于生产环境,已经有了真实数据,所以只能使用EF数据迁移来完成了。
于是我在model层的Blog.cs
里新增了如下代码:
public virtual IList<Tag> Tags { get; set; }
然后在model层的Tag.cs
里新增了如下代码:
public virtual ICollection<Blog> Blogs { get; set; }
然后开始操作数据迁移,生成的数据迁移为代码如下:
public override void Up()
{
//往dbo.blog表里新增了一列Tag_TagId
AddColumn("dbo.Blogs", "Tag_TagId", c => c.String(maxLength: 128));
//往dbo.Tags表里新增了一列Blog_BlogId1
AddColumn("dbo.Tags", "Blog_BlogId1", c => c.String(maxLength: 128));
CreateIndex("dbo.Blogs", "Tag_TagId");
CreateIndex("dbo.Tags", "Blog_BlogId1");
AddForeignKey("dbo.Blogs", "Tag_TagId", "dbo.Tags", "TagId");
AddForeignKey("dbo.Tags", "Blog_BlogId1", "dbo.Blogs", "BlogId");
}
由这段代码可见Blog
和Tag
表只是各自新增了外键进行1对1的关联,而不是我希望的多对多关系,还请各位大神指点。
对于这个问题解决方案我的猜想是:是不是对EF的多对多映射关系处理的不正确,需要加一些Attribute
做下映射?。
万分感谢,祝好。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在别的地方找到了解决方案。
在
DBContext
的OnModelCreating
写:然后再生成迁移(或者自己在up里创
blog_tag
表和设置外键关系)。