【问题标题】:Get the value for foreign key - Object reference not set to an instance of an object获取外键的值 - 对象引用未设置为对象的实例
【发布时间】:2014-05-26 17:29:28
【问题描述】:

所以我有两个模型:

public class User 
{ 
    [Key]
    public int Id {get;set;}

    public Group myGroup {get;set;}  
}

public class Group 
{
    public int id 
    public ICollection<User> Users {get;set;} 
}

但是当我查询用户以获取 GroupID - 无论我如何尝试,我总是得到“对象引用未设置为对象的实例”。

有什么想法吗?

编辑:

我尝试从 UserStore (

User currentUser = usrStore.FindByNameAsync(User.Identity.Name)

) 然后:

Group myGroup = context.Group.Find(currentUser.Group);

加载 Group 对象并稍后使用(例如 myGroup.Id)。

【问题讨论】:

  • 确实不管你如何尝试,请告诉我们。
  • 添加了我现在的尝试。

标签: asp.net-mvc entity-framework asp.net-membership code-first


【解决方案1】:

如果您使用的是实体框架,则您的代码缺少几项。

首先,将外键关系添加到User类中,如下所示:

public int GroupId { get; set; }

其次,将您的 Group 属性更改为虚拟,如下所示:

public virtual Group myGroup {get;set;} 

应该这样做,但您也应该将Group 类的Users 属性设为虚拟。

【讨论】:

  • 我做了这两件事,仍然得到同样的错误。用户组实际上是 ASP.Net Identity 2.0,所以这可能就是原因。一切都与数据库中的键正确映射,但由于某种原因,我无法获得 GroupID 字段的值。
  • @Ivan 那么你的User 类是否继承自IdentityUser
  • 您可能还需要id[Key] 属性Group 类。
  • 这不是问题?
  • 我的错,对不起!此外,看起来我的服务器上的另一个安装以某种方式弄乱了 cookie,我试图从另一个应用程序中为用户提取数据(不知道它是如何发生的)。尝试使用固定名称值,它现在可以工作了!感谢 David 和 Haim 抽出宝贵时间!
猜你喜欢
  • 1970-01-01
  • 2018-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多