0

我正在構建在線購物Web應用程序。 我有四個實體:設計代碼第一個實體框架實體框架

  1. 客戶
    • CusomerId
    • 名稱
    • 地址
    • 電話
  2. 類別
    • 類別編號
    • 類別
  3. 產品
    • 產品編號
    • 名稱
    • 價格
    • 類別
  4. 訂購
    • 的OrderId
    • 客戶編號
    • 產品編號
    • 數量
    • 金額

請幫我設計類,以便正確的關係(主鍵和外鍵)保持。 我試過這樣做,但數據庫本身正在創建導致不一致的外鍵。

我的課表:

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; }  
} 

的問題是在決定哪些應該進行主鍵和外鍵,怎麼樣? 當前數據庫正在將Product表中的order_orderid字段作爲外鍵自身添加。

+0

您應該顯示從EF生成的圖像數據庫。這將有助於你得到正確的答案。 – 2013-05-14 16:07:16

+0

@ToanVo:我用一些代碼更新了我的問題,請看看你能幫忙嗎? – 2013-05-14 16:19:27

回答

0

您的問題是您在Order旁邊使用List<Product> Products。我的理解是這個屬性不應該在這裏。您應該創建另一個表格OrderItem,其中將包含List<Product> Product。你可以下載NorthWind數據庫來獲得更多的理解。

回覆你的問題。您應該從類Order中刪除List<Product> Products屬性並重新生成數據庫。

0

有許多的問題:

  • 虛擬缺少導航性能

  • 考慮引入一個OrderItem的表或者需要每個項目代理鍵,以便表

  • 如果您想自己創建ForeignKey ID字段,則需要使用Annotation或Fluent API來向EF通知。

。這裏很好地解釋 Entity Framework Guide

0

我解決了它自己,它現在能正常工作。這裏是類:

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 Product 
{ 
    public int ProductId{ get; set; } 
    public string ProductName { get; set; } 
    public int Price { get; set; } 
    public int CategoryId { get; set; } 
    public virtual Category Categories { get; set; } 
} 

public class Order 
{ 
    public int CustomerID { get; set; } 
    public int OrderID { get; set; } 
    public int ProductId { get; set; } 
    public DateTime PurchaseDate { get; set; } 
    public string ProductName { get; set; } 
    public int Price { get; set; } 
    public string DeliveryStatus { get; set; } 
    public virtual Product Products { get; set; } 
    public virtual Customer Customers { get; set; } 
} 

這給了我完美的數據庫設計,因爲我想。