2014-05-01 69 views
0

我在研究實體框架並使用Code First和Data Annotations。未裝入屬性實體數據

我的問題,是當試圖獲取數據,爲相關屬性的數據沒有被加載(即所有值始終爲0)

下面是我的代碼:

public class Product 
{ 
    [Key()] 
    public int ProductID { get; set; } 

    public string Name { get; set; } 
    public bool IsActive { get; set; } 

    [Required] 
    [ForeignKey("Price")] 
    public int PriceID { get; set; } 
    public virtual Price Price { get; set; } 

    public Product() 
    { 
     this.ProductID = 0; 
     this.Name = String.Empty; 
     this.Price = new Price(); 
     this.IsActive = true; 
    } 


public class Price 
{ 
    [Key()] 
    public int PriceID { get; set; } 
    public decimal CostPrice { get; set; } 
    public decimal RetailPrice { get; set; } 


    public Price() 
    { 
     this.PriceID = 0; 
     this.CostPrice = 0.00m; 
     this.RetailPrice = 0.00m; 
    } 
} 

這裏的代碼通過ID來獲得數據:

public Product Get(int ID) 
    { 
     Product output = null; 

     using (PrismContext context = new PrismContext()) 
     { 

      output = context.Products.Include("Price") 
         .Where(p => p.ProductID == ID) 
         .FirstOrDefault(); 


      return output; 
     } 
    } 

我能夠得到的產品對象的屬性數據,但價格始終爲0

回答

0

這是因爲您在Product構造函數中初始化了Price

刪除此行:

this.Price = new Price(); 

此外,Price構造,因爲它初始化屬性,將其缺省值是完全冗餘的。

+0

你確定這是事實嗎?我想EF會首先實例化Product,然後使用它的Price屬性來設置價格。 –

+0

是的。請參閱http://stackoverflow.com/questions/22836194/ef-default-values-for-related-entities-in-constructor – haim770

+0

嗨haim非常感謝,刪除它解決了這個問題。還從構造函數中刪除了默認值 – codex10

相關問題