当前位置: 首页 > 面试题库 >

实体框架在哪里存储属性名称和它在SQL中选择的列之间的映射?

齐阳
2023-03-14
问题内容

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

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

完全可以接受依赖于私有/内部反射的解决方案。我知道我可能必须在将来的EF版本中进行调整。另外,如果有帮助,我只会使用MS SqlServer(2008+)。


问题答案:

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



 类似资料:
  • 问题内容: 在我的项目中,我使用Entity Framework6。我有以下实体: 和 当我插入一个填充了PersonRights的人员对象时,它在数据库中看起来像这样: 人员实体表: PersonRights实体表 当我从数据库加载人时,它没有填充PersonRights属性,这是因为virtual关键字具有延迟加载功能-可以。 然后我得到了person对象的PersonRights,它也可以正

  • 问题内容: 我链接到允许在列名称中使用句点的ProficyHistorian。因为数据是以非DBMS格式存储的,所以我不能用来获取数据,因为表没有设置模式。因此,我必须使用四部分名称语法来获取数据。此示例有效: 但这失败,因为 ‘。’附近的语法不正确。 列的名称在哪里 关键字’from’附近的语法不正确 也会失败 。 关于如何使SQL Server将其视为专栏的任何想法? 编辑: Martins建

  • 我为一个产品添加了一个产品属性键和值。 我想通过这个属性查询产品。我有一个查询(这里不相关),但它没有返回任何东西。于是我弹出打开PHPMyAdmin,开始搜索我的本地数据库从头开始。 我在任何地方都找不到我的新属性。 所以: 通过站点的本地主机版本的管理员设置。检查了DB连接,指向的是本地MySQL实例。保存属性,点击产品上的更新,离开产品页面并返回以确保属性确实在产品上并保存。 数据库里什么都

  • 好吧,我知道我对C#和MVC还很陌生,但我正在尝试使用代码优先的方法向数据库中添加项。 现在,我已经成功地为数据库创建了新条目,但当我转到SQL Server时,却找不到数据库或表。 因此,我的问题是,这些数据存储在哪里,因为我无法在SQL Server中看到它,就像我手动创建的其他数据库一样? 我的ConnectionString是:

  • 问题内容: 临时表在哪里存储在数据库中?我想删除一个临时表(如果已经存在)。我可以通过查询信息模式来对安全表执行此操作,但是我不知道临时表的存储位置。 问题答案: 临时表存储在tempdb数据库中。这里概述了检查临时表是否存在的多种方法:检查是否存在临时表。

  • 问题内容: 以下是在SQL中达到其结果的最有效的方法: 可以更好地使用联接并达到相同的结果吗? 问题答案: 您可能更喜欢使用a而不是的原因之一是,如果子句中的Values包含any,您将永远不会获得任何结果。如果确实要使用,请记住要始终考虑子查询是否可能带回NULL值! RE:评论中的问题 ‘x’NOT IN(NULL,’a’,’b’) ≧ ‘x’<> NULL和’x’<>’a’和’x’<>’b’