C# 如何从EntityDataSource访问外键表中的数据?

C# 如何从EntityDataSource访问外键表中的数据?,c#,entity-framework,C#,Entity Framework,我在实体模型中定义了一个表。我还在模型中的表上定义了外键导航属性 Users - UserID - Username - UserGroupID Groups - GroupID - GroupName 我有一个网格连接到EntityDataSource,它检索并显示Users表。我需要显示相应的GroupName,而不是为每个用户显示UserGroupID标识列。有没有一种简单的内置方法可以从用户对象获取组名,因为它们在实体模型中是连接的 谢谢! Kevin您应该在每个实体上设置关联。对于

我在实体模型中定义了一个表。我还在模型中的表上定义了外键导航属性

Users
- UserID
- Username
- UserGroupID

Groups
- GroupID
- GroupName
我有一个网格连接到EntityDataSource,它检索并显示Users表。我需要显示相应的GroupName,而不是为每个用户显示UserGroupID标识列。有没有一种简单的内置方法可以从用户对象获取组名,因为它们在实体模型中是连接的

谢谢!
Kevin

您应该在每个实体上设置关联。对于代码优先,它应该如下所示:

class User {
  // user properties...

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

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

您应该在每个实体上设置关联。对于代码优先,它应该如下所示:

class User {
  // user properties...

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

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

在本教程中,显示Instructors表的GridView执行您试图对EntityDataSource和GridView执行的操作(显示导航属性中的值):


在本教程中,显示Instructors表的GridView执行您试图对EntityDataSource和GridView执行的操作(显示导航属性中的值):


我该怎么做?所有内容都在图形化edmx文件中定义。类的实际定义在哪里?我猜您使用的是模型优先的方法,而我错误地认为您首先使用的是代码。请参阅-了解如何使用图形工具设置关联OK我知道如何添加关联。当我在设计时绑定网格时,当我将EntityDataSource指向Users表时,UserGroup外键表是否可用(作为列)?外键“UserGroup”将可用,但单元格不知道如何呈现它,因为它表示“Group”对象,而不是您期望的“GroupName”字符串。为此,您需要在用户上使用单独的getter属性,或者需要修改列绑定以获得“GroupName”。我在你的链接中找到了这篇博文:这正是我需要做的,但不幸的是,我的模型是在模型设计器中创建的,而不是在C代码中创建的。博客文章中给出的示例使用标准C#类和代码。我该如何做到这一点?所有内容都在图形化edmx文件中定义。类的实际定义在哪里?我猜您使用的是模型优先的方法,而我错误地认为您首先使用的是代码。请参阅-了解如何使用图形工具设置关联OK我知道如何添加关联。当我在设计时绑定网格时,当我将EntityDataSource指向Users表时,UserGroup外键表是否可用(作为列)?外键“UserGroup”将可用,但单元格不知道如何呈现它,因为它表示“Group”对象,而不是您期望的“GroupName”字符串。为此,您需要在用户上使用单独的getter属性,或者需要修改列绑定以获得“GroupName”。我在你的链接中找到了这篇博文:这正是我需要做的,但不幸的是,我的模型是在模型设计器中创建的,而不是在C代码中创建的。博客文章中给出的示例使用标准C#类和代码。我正在将用户表绑定到网格。在设计时,将检索列。我的目标是不显示UserGroupID列,而是显示外键表中的GroupName列。我只是使用EntityDataSource向导指向users表。如何指定myUser.UserGroup.Name?我确实设置了导航属性。它们是自动设置的,因为我的外键在SQL数据库中。我想我的问题是我已经定义了所有导航属性,但是当我设置EntityDataSource时,它只是从用户表中检索列。您是说,由于定义的关系,它应该检索用户表和用户组表吗?因为不幸的是,这没有发生。我正在将用户表绑定到网格。在设计时,将检索列。我的目标是不显示UserGroupID列,而是显示外键表中的GroupName列。我只是使用EntityDataSource向导指向users表。如何指定myUser.UserGroup.Name?我确实设置了导航属性。它们是自动设置的,因为我的外键在SQL数据库中。我想我的问题是我已经定义了所有导航属性,但是当我设置EntityDataSource时,它只是从用户表中检索列。您是说,由于定义的关系,它应该检索用户表和用户组表吗?因为不幸的是,这并没有发生。