加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – Entity Framework在哪里存储属性名称与它在SQL中选择的列

发布时间:2020-12-15 17:28:32 所属栏目:百科 来源:网络整理
导读:我正在尝试使用ObjectQuery的ToTraceString()在EF(4.3)上构建一些自定义扩展,以从LINQ代码生成原始SQL. 我注意到在某些情况下,SQL中列的名称与查询元素类型的属性名称匹配,在其他情况下,它们被命名为C1,C2等.这使我很难做任何事情使用生成的SQL.有没有人知道
我正在尝试使用ObjectQuery的ToTraceString()在EF(4.3)上构建一些自定义扩展,以从LINQ代码生成原始SQL.

我注意到在某些情况下,SQL中列的名称与查询元素类型的属性名称匹配,在其他情况下,它们被命名为C1,C2等.这使我很难做任何事情使用生成的SQL.有没有人知道如何将这些列名称映射回属性名称(我只关心能够为平面元组执行此操作,如匿名类型,如果有帮助,我不需要任何分层).

依赖于私人/内部反射的解决方案是完全可以接受的.我知道我可能需要在将来的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语句列名(可以使用正则表达式,但这可能有点过分).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读