【问题标题】:Linq replace field for a subquery子查询的 Linq 替换字段
【发布时间】:2010-01-29 11:38:38
【问题描述】:

我有一个包含用户和角色的数据库。表用户具有对表角色的引用,因为每个用户都绑定到一个角色(一个且只有一个)。 当我使用 linq 检索用户时,字段“角色”在数据网格中显示为整数(这是表角色的主键)。但是,我想将用户的字段角色替换为角色表的实际名称字段。有什么想法吗?

现在datacontext的代码是默认的,我应该用什么linq查询来得到我需要的?

public IQueryable<Usuarios> GetUsuarios()
{
        return this.ObjectContext.Usuarios;
}

【问题讨论】:

  • 如果您使用实体框架/LINQ 到任何东西,请将其标记为这样。

标签: .net linq entity-framework linq-to-entities datacontext


【解决方案1】:

执行此操作的规范方法是为您的数据网格创建一个特定于视图的模型,并使用 LINQ 选择该特定于视图的模型。我的示例假定使用 LINQ to SQL。

public IEnumerable<UserWithRoles> GetUsersWithRoles()
{
     return this.ObjectContext
                .Users
                .Select( u => new UserWithRole { Name = u.Name, ..., Role = u.Roles.First().Name } );
}

【讨论】:

  • 只是另一个与此相关的问题。如果我使用这个解决方案,我还能使用主/从功能吗?我的意思是,如果我使用 Grid 上的 SelectedItem 来设置 Detail 控件,它会使用 User 还是 UserWithRoles?如果是后者,我怎样才能回到原来的用户?谢谢!
  • 我认为您只需要在数据源上识别正确的方法,该方法将返回特定于细节的视图模型(或实际的业务对象,如果它们相同)。请注意,您需要在主视图模型中包含对应于要检索的正确详细信息项的 ID(可能)。
【解决方案2】:

这样做可以尽早将角色绑定到用户:

return this.ObjectContext.Usuarios.Include("Roles");

【讨论】:

    猜你喜欢
    • 2021-12-26
    • 1970-01-01
    • 1970-01-01
    • 2020-05-08
    • 2020-04-20
    • 1970-01-01
    • 1970-01-01
    • 2021-09-01
    • 1970-01-01
    相关资源
    最近更新 更多