2013-06-26 82 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