2012-01-25 35 views
0

我有一个在我的实体模型中定义的表。我也有在模型中的表上定义的外键导航属性。如何从EntityDataSource访问外键表中的数据?

Users 
- UserID 
- Username 
- UserGroupID 

Groups 
- GroupID 
- GroupName 

我有一个网格连接到一个EntityDataSource,它检索并显示Users表。我不需要为每个用户显示UserGroupID标识列,而需要显示相应的GroupName。是否有一种简单的方法来从User对象中获取GroupName,因为它们在实体模型中连接在一起?

谢谢! Kevin

+0

我User表结合到电网。作为设计时间,检索列。我的目标是不显示UserGroupID列,而是显示外键表中的GroupName列。我只是使用EntityDataSource向导来指向users表。我如何指定myUser.UserGroup.Name?我确实设置了导航属性。由于我的外键在SQL数据库中,它们会自动设置。 – Kevin

+0

我想我的问题是我有所有定义的导航属性,但是当我设置我的EntityDataSource时,它只是从用户表中检索列。你是否说它应该检索用户表和UserGroups表,由于定义的关系?因为这不幸的是没有发生。 – Kevin

回答

1

您应该在每个实体上设置关联。代码首先,它应该是这个样子:

class User { 
    // user properties... 

    [ForeignKey("UserGroupID")] 
    public virtual Group Group { get; set; } 
} 

class Group { 
    // group properties... 
    public virtual ICollection<User> Users { get;set; } 
} 

然后,你可以致电:

user.Group.GroupName 
+0

我该怎么做?所有内容都在图形edmx文件中定义。班级在哪里定义? – Kevin

+0

我想你使用的是模型优先的方法,而我错误地认为你使用的是Code First。请参阅 - http://msdn.microsoft.com/en-us/library/bb738477.aspx关于如何使用图形工具来设置关联 – PinnyM

+0

好的,我知道如何添加关联。当我在设计时绑定网格时,当我将EntityDataSource指向Users表时,UserGroup外键表是否可用(作为列)? – Kevin