【问题标题】:How to access data in foreign key table from EntityDataSource?如何从 EntityDataSource 访问外键表中的数据?
【发布时间】:2012-01-27 00:18:44
【问题描述】:

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

Users
- UserID
- Username
- UserGroupID

Groups
- GroupID
- GroupName

我有一个连接到 EntityDataSource 的网格,它检索并显示用户表。我需要显示相应的 GroupName,而不是显示每个用户的 UserGroupID 身份列。由于它们在实体模型中连接,因此是否有一种简单的内置方法可以从 User 对象中获取 GroupName?

谢谢! 凯文

【问题讨论】:

  • 我将 User 表绑定到一个网格。作为设计时,检索列。我的目标是不显示 UserGroupID 列,而是显示外键表中的 GroupName 列。我只是使用 EntityDataSource 向导指向用户表。如何指定 myUser.UserGroup.Name?我确实设置了导航属性。由于我在 SQL 数据库中的外键,它们是自动设置的。
  • 我想我的问题是我已经定义了所有导航属性,但是当我设置我的 EntityDataSource 时,它​​只是从 User 表中检索列。您是说由于定义的关系,它应该检索 User 表和 UserGroups 表吗?因为不幸的是,这并没有发生。

标签: c# entity-framework


【解决方案1】:

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

http://www.asp.net/web-forms/tutorials/getting-started-with-ef/the-entity-framework-and-aspnet-getting-started-part-4

【讨论】:

    【解决方案2】:

    您应该为每个实体设置关联。对于 Code First,它应该如下所示:

    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
    

    【讨论】:

    • 我该怎么做?一切都在图形 edmx 文件中定义。类实际定义在哪里?
    • 我猜您使用的是模型优先方法,而我错误地认为您使用的是代码优先方法。请参阅 - msdn.microsoft.com/en-us/library/bb738477.aspx 了解如何使用图形工具设置关联
    • 好的,我知道如何添加关联了。当我在设计时绑定网格时,当我将 EntityDataSource 指向 Users 表时,UserGroup 外键表是否可用(作为列)?
    • 外键 'UserGroup' 将可用,但单元格不知道如何呈现它,因为它代表一个 'Group' 对象而不是您期望的 'GroupName' 字符串。为此,您需要在 User 上使用单独的 getter 属性,或者您需要修改列绑定以获取“GroupName”。有关执行此操作的方法,请参阅 social.msdn.microsoft.com/Forums/en-US/winformsdatacontrols/…
    • 我在您的链接中找到了这篇博文:blogs.msdn.com/b/msdnts/archive/2007/01/19/… 这正是我需要做的,但不幸的是我的模型是在模型设计器中创建的,而不是在 C# 代码中。博文中给出的示例使用标准 C# 类和代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-25
    • 1970-01-01
    • 2020-01-31
    • 2021-09-16
    • 1970-01-01
    • 2021-07-10
    • 1970-01-01
    相关资源
    最近更新 更多