c# - 在分层 SQL 数据库中查找所有父项

标签 c# sql entity-framework linq

我使用 ASP.NET 4.5 和 EF 6 组合了一个多级数据模型,如下所示:

Organization,它有一个 ICollection:

_____Workspaces,它有一个 ICollection:

__________Projects,它有一个 ICollection:

______________卡片

如果我有一个 Card Id,我如何找到它上面的 parent ?我什至不知道如何获得一级 parent 。要找到 Id 为 myCardId 的卡片的父级项目,我想编写如下内容:

var project = db.Projects.Where(p => p.Cards.Where(c => c.Id == myCardId));

有什么指导吗?您可以向我指出好的教程吗?


更新:这是我的项目模型:

public class Project
{
    public int Id { get; set; }
    public string Title { get; set; }
    public string Description { get; set; }
    public DateTime Created { get; set; }

    public virtual ICollection<Card> Cards { get; set; }   
}

这是我的名片:

public class Card
{
    public int Id { get; set; }
    public string Title { get; set; }
    public DateTime Created { get; set; }
    public string Notes { get; set; }          
}

当我查看数据库中的表时,Card 有一个 Project_Id 列,但这是 Entity Framework 所做的事情神奇地发生的 - 我相信。因为 Card 模型上没有 Parent 对象,所以我无法以编程方式请求诸如 Card.Project.Workspace.Organization 之类的东西...

我是不是把整个事情都设置反了?

最佳答案

希望您对每个表都有引用。

这样你就可以得到组织。

var organization = (from o in Organization
                    from w in Workspaces
                    from p in Projects
                    from c in Cards
                    where c.Id == myCardId && p.projectid == c.projectid && w.workspaceid == p.workspaceid && o.organizationid == w.organizationid select o).FirstOrDefault();

如果它与您的代码不同,请在此处发布您的集合结构,以便任何人都可以提供帮助。

关于c# - 在分层 SQL 数据库中查找所有父项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34604171/

相关文章:

c# - 在内循环中尝试使用 savechanges() 进行保存时出现事务错误

python - Python 可行的数据库抽象层是什么

SQL:保证恰好 N 行与多对多查询匹配?

c# - Blazor、对象生命周期和依赖注入(inject)

c# - LINQ 的 Count 扩展方法的 SQL 等价物并不明显

c# - 是否可以在 C# 中创建有状态 Web 服务?

c# - 在单独的 dll WPF 中设置资源

c# - LINQ 检查一个列表是否包含另一个列表中的任何项目 mysql 语法错误

sql - 关系数据库和图数据库的比较

entity-framework - 如何使用 DotConnect for PostgreSQL 查询 Entity Framework 实体的空字段值