entity-framework - 在什么情况下需要使用 CREATEREF、DEREF 和 REF 关键字?

标签 entity-framework entity-sql

这个问题是关于为什么我会使用上述关键字。我找到了大量解释如何操作的 MSDN 页面。我正在寻找原因。

我会尝试编写什么查询来表示我需要它们?我问这个问题是因为我发现的例子似乎可以通过其他方式实现......

为了尝试自己解决这个问题,我使用 AdventureWorks 数据库中的 Employee 和 EmployeePayHistory 表创建了一个非常简单的实体模型。

我在网上看到的一个示例演示了类似于以下 Entity SQL 的内容:

SELECT VALUE
    DEREF(CREATEREF(AdventureWorksEntities3.Employee, row(h.EmployeeID))).HireDate
FROM 
    AdventureWorksEntities3.EmployeePayHistory as h

这似乎无需指定连接即可拉回 HireDate?

为什么这比下面的 SQL 更好(看起来做的事情完全相同)?

SELECT VALUE
    h.Employee.HireDate
FROM 
    AdventureWorksEntities3.EmployeePayHistory as h

看看上面的两条语句,我无法计算出 CREATEREF、DEREF 位添加了哪些额外内容,因为我似乎无需它们即可获得我想要的内容。

我假设我还没有找到演示目的的场景。我假设在某些情况下使用这些关键字要么更简单,要么是实现所需结果的唯一方法。

我找不到的是场景......

有人可以填补这个空白吗?我不需要整套 SQL。我只需要一个起点,即一两个场景的简短描述......我可以自己对此进行扩展。

最佳答案

看看这个post

One of the benefits of references is that it can be thought as a ‘lightweight’ entity in which we don’t need to spend resources in creating and maintaining the full entity state/values until it is really necessary. Once you have a ref to an entity, you can dereference it by using DEREF expression or by just invoking a property of the entity

关于entity-framework - 在什么情况下需要使用 CREATEREF、DEREF 和 REF 关键字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9556589/

相关文章:

c# - 如何在EF中通过替换来更新实体?

c# - 使用在多个列上具有主键的 Entity Framework 更新数据库

c# - 如何将类属性的值设置为插入到数据库时另一个类的生成的 id 值?

sql-server - 用于组合数据的 Entity Framework 算法

c# - 我可以在 LINQ to Entities 查询中使用 CAST 吗?

asp.net - 实体数据源中的 Like 运算符

c# - 从查询字符串开始时比较 EntitySQL 中的 DateTime 值

c# - 如何在 ASP.NET MVC 5 应用程序和 .NET 控制台应用程序之间共享数据库?

.net - Entity Framework 4.0 : Entity SQL CAST Operation Not Working

c# - 如何在 C# 中使用 DBContext 编写动态 LINQ 查询