有人可以解释实体SQL中REF,CREATEREF,DEREF,KEY的作用吗?

时间:2011-09-30 14:27:10

标签: entity-framework entity-sql

我找不到关于这些运营商的好文档。有人可以提供一些使用示例并解释他们的工作吗?

1 个答案:

答案 0 :(得分:0)

实体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 

使用实体框架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();
}