0

我在网上有一个公司的简单目录。它由包含项目的类别组成。他们现在有一些适合两个类别的项目,并希望在两个类别中显示一个项目。

目前模型看起来像这样

public class Category {
    public virtual ICollection<Item> Items { get; set; }
}

public class Item {
    /* No reference to no category */
}

很久以前生成的数据库将项目表中的类别链接起来。所以现在如果我在最后一个类别中添加一个项目,我添加了“计数”。

我想在不丢失任何数据的情况下更改它。我该怎么做?请注意,我可以更改我喜欢的数据库结构。

4

2 回答 2

0

您需要创建一个新表

ItemCategories 
   ItemID,
   CategoryID

并将关系添加到 Item 和 Category 表

然后使用每个项目的 categoryID 填充此表

即(在 SQL 中)

Insert ItemCategories (ItemID, CategoryID)
select itemid, categoryid from items

然后从 Items 表中删除 CategoryID,并重新生成模型

于 2012-08-21T12:21:57.673 回答
0

我最终创建了数据库的备份并强制使用 dataloss 更新数据库并使用

          modelBuilder
            .Entity<Category>()
            .HasMany(c => c.Items)
            .WithMany()
            ;

然后创建一个 sql-script 将数据丢失插入到正确的表中

于 2012-08-23T18:50:40.983 回答