我在网上有一个简单的公司目录。它由包含项目的类别组成。他们现在有一些项目适合两个类别,并希望显示两个类别中的一个项目。
目前模特看起来像这样
public class Category {
public virtual ICollection<Item> Items { get; set; }
}
public class Item {
/* No reference to no category */
}
很久以前生成的数据库链接了Item-table中的类别。所以现在如果我在最后添加一个项目到两个类别我添加了“计数”。
我想在没有任何数据丢失的情况下更改此设置。我该怎么办?请注意,我可以更改我喜欢的数据库结构。
答案 0 :(得分:0)
您需要创建一个新表
ItemCategories
ItemID,
CategoryID
并添加与Item和Category表的关系
然后使用每个项目的categoryID填充此表
即(在SQL中)
Insert ItemCategories (ItemID, CategoryID)
select itemid, categoryid from items
然后从Items表中删除CategoryID,并重新生成模型
答案 1 :(得分:0)
我最终创建了数据库的备份并使用dataloss强制更新数据库并使用
modelBuilder
.Entity<Category>()
.HasMany(c => c.Items)
.WithMany()
;
然后创建一个sql脚本以将数据丢失插入到右表中