有人可以解释实体SQL中的REF,CREATEREF,DEREF,KEY做什么吗?

Pio*_*rak 5 entity-framework entity-sql

我找不到关于这些运算符的好的文档。有人可以提供一些使用示例并解释其作用吗?

Eri*_*ono -1

Entity SQL 的 CREATEREF 参考:http://msdn.microsoft.com/en-us/library/bb386880(v=VS.90)

它用于“制作对实体集中实体的引用”。您还可以从链接中找到 REF 和 DEREF 的参考。

对于VS 2010,参考是:http://msdn.microsoft.com/en-us/library/bb386880(v=VS.100)

来自 MSDN 的示例:

在下面的示例中,Orders 和 BadOrders 都是 Order 类型的实体集,并且假定 Id 是 Order 的单键属性。该示例说明了我们如何生成对 BadOrders 中的实体的引用。请注意,引用可能是悬空的。也就是说,引用实际上可能并不标识特定实体。在这些情况下,对该引用执行 DEREF 操作将返回 null。

 select CreateRef(LOB.BadOrders, row(o.Id)) 
from LOB.Orders as o 
Run Code Online (Sandbox Code Playgroud)

使用实体框架SQL的示例代码:

using (EntityConnection conn =
    new EntityConnection("name=AdventureWorksEntities"))
{
    conn.Open();
    // Create a query that takes two parameters.
    string esqlQuery =
        @"SELECT VALUE Contact FROM AdventureWorksEntities.Contact 
                    AS Contact WHERE Contact.LastName = @ln AND
                    Contact.FirstName = @fn";

try
{
    using (EntityCommand cmd = new EntityCommand(esqlQuery, conn))
    {
        // Create two parameters and add them to 
        // the EntityCommand's Parameters collection 
        EntityParameter param1 = new EntityParameter();
        param1.ParameterName = "ln";
        param1.Value = "Adams";
        EntityParameter param2 = new EntityParameter();
        param2.ParameterName = "fn";
        param2.Value = "Frances";

        cmd.Parameters.Add(param1);
        cmd.Parameters.Add(param2);

        using (DbDataReader rdr = cmd.ExecuteReader(CommandBehavior.SequentialAccess))
        {
            // Iterate through the collection of Contact items.
            while (rdr.Read())
            {
                Console.WriteLine(rdr["FirstName"]);
                Console.WriteLine(rdr["LastName"]);
            }
        }
    }
}
catch (EntityException ex)
{
    Console.WriteLine(ex.ToString());
}
conn.Close();
}
Run Code Online (Sandbox Code Playgroud)