gpt4 book ai didi

linq - 我怎样才能 'walk' LINQ 中表之间的关系?

转载 作者:行者123 更新时间:2023-12-05 00:39:42 25 4
gpt4 key购买 nike

假设我有三个表:

Office
ID

SalespeopleOffice
ID
OfficeID
PersonID

People
ID
ManagerID

在 LINQ to SQL 中,如何从 SalespeopleOffices 开始表并从该表“步行”到 People表或 Office表通过表之间的关系?特别是不知道这些关系是什么;提取有关关系的数据,而不是直接与对象交互。我正在寻找一种以编程方式分析表关系的方法。我正在使用的数据库有比这更多的表,所以实际上它比这复杂得多。

理想情况下,我想创建一个 LinqPad 脚本来执行此操作。

最佳答案

您可以使用反射来检查上下文中每种类型的属性。 (在 LinqPad 中,上下文是 this )。

  • 值和字符串属性将是表中的标量字段,
  • EntitySet 属性将表示 [something] 对多关系,以及
  • 其他类型将是 [某物] 对一的关系。

  • 如果您将关系的两端联系起来,您就可以弄清楚每种情况下的 [某物] 是什么。那有意义吗?

    编辑

    我只是四处闲逛,有一个更好的方法。模型信息可通过 Mapping 属性获得。尝试这个:
    var tableData = from t in this.Mapping.GetTables()
    select new
    {
    t.TableName,
    Associations =
    from a in t.RowType.Associations
    select new
    {
    a.ThisMember.Name,
    TypeName = a.ThisMember.Type.Name
    }
    };
    tableData.Dump();

    假设您已激活自动完成,通过探索此元数据的属性来查找您感兴趣的确切数据应该是小菜一碟。

    关于linq - 我怎样才能 'walk' LINQ 中表之间的关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4380834/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com