Entity framework 获取使用父类获取时填充的导航属性

Entity framework 获取使用父类获取时填充的导航属性,entity-framework,entity,entity-framework-5,Entity Framework,Entity,Entity Framework 5,我使用的是一个会员资格提供者,它指定用户中的必填字段,如用户名和密码。然后,您可以继承这个用户类来创建您自己的用户和您需要的任何其他字段 我加了一个这样的账户 public Account AdminAccount { get; set; } 当我现在使用membershipprovider获取我的用户时,它会执行以下操作: return _context.Set<TUser>().SingleOrDefault(u => u.Username == username);

我使用的是一个会员资格提供者,它指定用户中的必填字段,如用户名和密码。然后,您可以继承这个用户类来创建您自己的用户和您需要的任何其他字段

我加了一个这样的账户

public Account AdminAccount { get; set; }
当我现在使用membershipprovider获取我的用户时,它会执行以下操作:

return _context.Set<TUser>().SingleOrDefault(u => u.Username == username);
return\u context.Set().SingleOrDefault(u=>u.Username==Username);
此成员资格类的类定义如下所示

public class FlexMembershipUserStore<TUser> 
    : IFlexUserStore
        where TUser: class, IFlexMembershipUser, new()     
公共类FlexMembershipUserStore
:IFlexUserStore
其中TUser:class,IFlexMembershipUser,new()
因此,我在创建用户类时将其发送进来,该类知道Tuser是iFlexMembership用户

但是,IFlexMembershipUser没有我的AdminAccount属性,只有从IFlexMembershipUser继承的类具有该属性。 因此,当我获取我的用户时,即使他在数据库中有一个名为admincount\u Id的字段,但该字段设置正确,我只会将admincount设置为null

当然,我看到了成员身份问题,只看到IFlexMembershipUser和我的属性不存在于该类中,但其他标量值被正确读取

我能做些什么吗。
在这种特殊情况下,我可以让帐户以用户列表的形式跟踪其管理员。所以我可以用这种方式解决这个问题,但我仍然很好奇是否可以用其他方式解决这个问题。

这里的问题是,出于性能原因,EF只加载您告诉它的内容。加载远程导航属性有两个选项,即即时加载(我的首选)或延迟加载

通过快速加载,您可以在查询时告诉EF您对特定的nav属性感兴趣,它将继续为您加载。为此:

using System.Data.Entity;

....

_context.Set<TUser>().Include(u=>u.AdminAccount).SingleOrDefault(u => u.Username == username);
使用System.Data.Entity;
....
_context.Set().Include(u=>u.admincount).SingleOrDefault(u=>u.Username==Username);

我担心你会这么说。您看到的问题是,成员资格提供程序只处理它的主类,该主类没有任何导航属性。是我的子类拥有这些。既然会员提供商不应该真正了解我的项目,我想我已经走到了尽头。我将简单地颠倒逻辑,将管理员放入帐户,而不是用户帐户。