gpt4 book ai didi

c# - Entity Framework 在哪里存储属性名称和它在 SQL 中选择的列之间的映射?

转载 作者:行者123 更新时间:2023-11-30 12:32:04 24 4
gpt4 key购买 nike

我正在尝试使用 ObjectQuery 的 ToTraceString() 在 EF (4.3) 上构建一些自定义扩展,以从 LINQ 代码生成原始 SQL。

我注意到,虽然在某些情况下,SQL 中列的名称与查询元素类型的属性名称相匹配,但在其他情况下,它们被命名为 C1、C2 等。这让我很难理解对生成的 SQL 执行任何操作。有谁知道如何将这些列名称映射回属性名称(我只关心能够对平面元组(如匿名类型)执行此操作,如果有帮助的话,我不需要任何层次结构)。

依赖私有(private)/内部反射的解决方案是完全可以接受的。我了解我可能需要根据 future 的 EF 版本对其进行调整。另外,如果有帮助,我只会使用 MS SqlServer (2008+)。

最佳答案

我刚刚提出并回答了一个类似的问题(您可以忽略所有 DataTable 内容,但它可能很有用,因为它显示了如何使用映射):

Entity Framework - IQueryable to DataTable

显示如何获取对象属性位置和 SQL 语句列位置之间的映射的原始帖子可以在这里找到:

How does Entity Framework manage mapping query result to anonymous type?

注意:第二个链接仅提供对象属性和 SQL 语句列之间的位置(作为整数值)的映射...您将拥有使用反射获取实际的对象属性名称,然后对 SQL 语句进行某种字符串分析以获取 SQL 语句列名称(您可以为此使用正则表达式,但这可能有点矫枉过正)。

关于c# - Entity Framework 在哪里存储属性名称和它在 SQL 中选择的列之间的映射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12073001/

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