GetOwinContext实体框架不检索导航属性

时间:2014-10-10 21:19:49

标签: asp.net-mvc asp.net-mvc-5 entity-framework-6 dbcontext

我在使用Identity 2.0的ASP.NET MVC 5应用程序中使用Entity Framework 6.x.我添加了补充配置文件信息,这些信息存储在一个单独的表中,而不是AspNetUsers。为此,我的ApplicationUser类有一个这样的属性:

public class ApplicationUser : IdentityUser {
    public virtual SupplementalProfile Supplemental { get; set; }
        :
}

补充资料看起来像这样

public class SuplementalProfile {
    [Key] public string Id { get; set; }
    [StringLength(50), MaxLength(50), Required] public string FirstName { get; set; }
    [StringLength(50), MaxLength(50), Required] public string LastName { get; set; }
    [ForeignKey("CountryCode")] public virtual Country Country { get; set; }
}

在我的控制器代码中,我试图使用补充配置文件的一些属性,如下所示:

ApplicationUser appuser = UserManager.FindById(User.Identity.GetUserId());
MyDatabaseContext = new ApplicationDbContext();
Currency currency = MyDatabaseContext.Currencies.Where(c => c.CountryCode == appuser.Supplemental.CountryCode).FirstOrDefault();
return currency

但是我得到一个异常,说目标必须是静态的。我发现似乎抛出了因为lambda表达式中的c.CountryCode值为null。实际上,事实证明,虽然appuser确实代表了一个有效的用户,但当我尝试访问Supplemental导航属性时,我得到一个null。

为什么不从导航属性中获取补充配置文件?

0 个答案:

没有答案