2013-06-26 117 views
1

我很新的實體框架,所以我道歉,如果這是一個愚蠢的問題...實體框架5 - 不填充外鍵

這裏是我的POCO:

[Table("RegistrationCodes")] 
public class RegistrationCode 
{ 
    [Key] 
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] 
    public int Id { get; set; } 

    [Required] 
    public Guid Code { get; set; } 

    public int? UserId { get; set; } 

    [ForeignKey("UserId")] 
    public UserProfile User { get; set; } 

    [StringLength(500)] 
    public string Notes { get; set; } 
} 

當我使用下面的代碼從我的DBSet中檢索對象,UserId始終爲空。

return this.Context.RegistrationCodes.FirstOrDefault(c => c.Code == code); 

我檢查了數據庫並確認UserId不爲空。此外,我已分析並可以看到UserId正在從數據庫中請求。

任何幫助將不勝感激。

+0

它的UserId或UserProfile是否爲null? –

+0

UserId和UserProfile都爲null爲空 –

回答

1

Ohhhhh我,不要我覺得愚蠢...

這裏是發生了什麼事,我運行代碼,我可以看到用戶ID字段在數據庫中更新。每次我重新啓動應用程序時,代碼遷移都會運行,並向表中添加一個AddOrUpdate,從而將UserId列清空。

我們可以一起刪除這個問題嗎?

+1

在此留出問題並接受您自己的答案。這是一個很好的例子,說明一個總是運行'Seed'方法的陷阱。其他人也遇到過這個問題,就像這裏:http://stackoverflow.com/questions/13510341/entity-framework-5-migrations-setting-up-an-initial-migration-and-single-seed-o – Slauma