0

私はオンライン ショッピング Web アプリケーションを構築しています。私は4つのエンティティを持っています:

  1. お客様
    • 顧客ID
    • 名前
    • 住所
    • 電話
  2. カテゴリー
    • カテゴリ ID
    • カテゴリー
  3. 製品
    • 製品番号
    • 名前
    • 価格
    • カテゴリー
  4. 注文
    • オーダーID
    • 顧客ID
    • 製品番号

適切な関係 (主キーと外部キー) が維持されるようにクラスを設計するのを手伝ってください。私はそれをやってみましたが、データベース自体が不整合を引き起こす外部キーを作成していました。

私のクラス:

public class Category    
{    
    public int CategoryId { get; set; }
    public string CategoryName { get; set; }    
}

public class Customer    
{    
    public int CustomerID { get; set; }
    public string Name { get; set; }
    public string Address { get; set; }
    public string  Email { get; set; }
    public string  Password { get; set; }    
}

public class Order    
{    
    public int CustomerID { get; set; }
    public int OrderID { get; set; }
    public DateTime PurchaseDate { get; set; }
    public string ProductName { get; set; }
    public List<Product> Products { get; set; }
    public List<Customer> Customers { get; set; }    
}

public class Product    
{    
    public int ProductId{ get; set; }
    public string ProductName { get; set; }
    public int Price { get; set; }
    public string Category { get; set; }
    public List<Category> Categories { get; set; }    
}

問題は、何を主キーと外部キーにするか、またその方法を決定することです。現在、データベースはテーブルにorder_orderidフィールドProductを外部キーとして追加しています。

4

3 に答える 3

1

あなたの問題は、あなたがList<Product> Products側で使用していることOrderです。私は、このプロパティがここにあってはならないことを理解しています。を含む別のテーブルを作成する必要がOrderItemありますList<Product> ProductNorthWindデータベースをダウンロードして、理解を深めることができます。

あなたの問題をカムバックします。List<Product> Productsプロパティをクラスから削除し、Orderデータベースを再生成する必要があります。

于 2013-05-14T16:40:23.093 に答える
0

いくつかの問題があります。

  • ナビゲーション プロパティの仮想欠落

  • OrderItem テーブルの導入を検討しないと、Order テーブルのアイテムごとに代理キーが必要になります

  • 自分で ForeignKey ID フィールドを作成する場合は、そのことを EF に伝えるために Annotation または Fluent API が必要です。

ここでよく説明されています Entity Framework Guide

于 2013-05-15T16:09:44.097 に答える