0

Web 上に会社の簡単なカタログがあります。アイテムを含むカテゴリで構成されています。現在、2 つのカテゴリに当てはまるアイテムがいくつかあり、1 つのアイテムを 2 つのカテゴリに表示したいと考えています。

現時点では、モデルはこのように見えます

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

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

ずいぶん前に生成されたデータベースは、項目テーブルからカテゴリをリンクしていました。したがって、最後の2つのカテゴリにアイテムを追加すると、「カウント」が追加されました。

データを失うことなくこれを変更したいと思います。どうすればいいですか?データベース構造を好きなだけ変更できることに注意してください。

4

2 に答える 2

0

新しいテーブルを作成する必要があります

ItemCategories 
   ItemID,
   CategoryID

Item テーブルと Category テーブルにリレーションシップを追加します

次に、このテーブルに各アイテムのカテゴリIDを入力します

すなわち(SQLで)

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

次に、Items テーブルから CategoryID を削除し、モデルを再生成します。

于 2012-08-21T12:21:57.673 に答える
0

データベースのバックアップを作成し、データ損失を伴うデータベースの更新を強制して使用することになりました

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

次に、SQLスクリプトを作成して、データ損失を正しいテーブルに挿入します

于 2012-08-23T18:50:40.983 に答える