如何“遍历”LINQ 中表之间的关系?

2024-01-07

假设我有三张表:

Office
 ID 

SalespeopleOffice 
 ID 
 OfficeID
 PersonID

People 
 ID 
 ManagerID 

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

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


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

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

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

Edit

我只是稍微探索一下,还有更好的方法。模型信息可通过 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();

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何“遍历”LINQ 中表之间的关系? 的相关文章