实体关系无法从数据库中正确读取

时间:2010-10-21 17:26:53

标签: visual-studio-2008 entity-framework asp.net-mvc-2 relationship

我在mvc2应用程序中设置了实体关系,这样每个用户都有一个角色,每个角色可以有很多用户。像这样:

 Roles         Users
--------     ---------
 RoleID--      UserID
         \
 Name     -->  RoleID

这是一个非常基本的多对一关系,在数据库中实施并反映在我的实体关系图中。但是,当我尝试获取用户的角色(user.Role.Name)时,它始终为null,我在数据库中看到用户的角色设置为有效ID。这是我第一次尝试使用实体,因为我以前一直使用LINQ2SQL,这只是让我困惑。

做什么?

这是我的edmx文件的屏幕截图

http://cl.ly/a9c088698369a54fc770

在数据库中,用户表具有RoleID属性(不确定为什么它没有在图中显示),我可以自由地从用户遍历到角色,并且已知它是一对多的关系编译器,但在尝试查看用户对象时它只是返回null。

编辑:

这是我使用的查询

User user = db.Users.SingleOrDefault(u => u.Username == username);
user.Role.Name

我的用户对象不为null,其任何其他属性都是可见的,因为看不到该角色,每个用户都有一个角色。

2 个答案:

答案 0 :(得分:1)

您需要手动加载任何引用,如:

Users.Roles.Load()

已添加奖金:

取出generic repository ......太棒了。

答案 1 :(得分:0)

在模型浏览器中查找用户和角色之间的关联,然后确保将Role属性定义为Navigation Property