[英]ADO.Net Entity Framework: What's this?
我剛剛開始使用 ADO.NET 實體框架進行開發,但我不知道如何編寫:
ClientEntities clientContext = new ClientEntities();
ObjectQuery clientQuery =
clientContext.Client.Where("it.email = @email AND it.password = @password",
new ObjectParameter("email", "xxx@hotmail.com"),
new ObjectParameter("password", "xAdxar12s"));
Console.WriteLine(clientQuery.Count());
Console.ReadLine();
它有效!
但是,這是什么?
"it.email = @email AND it.password = @password"
我在哪里可以學習這種“SQL 語法”? 我不知道為什么我必須使用它。 email或SELECT VALUE的含義。 它是“實體 SQL”嗎?
謝謝!
是的,這是實體 SQL。
“LINQ to Entities”是從上下文中檢索實體實例的一種方式。 實體 SQL 是另一個。 兩者都工作,得到支持,並相互補充。
SELECT VALUE 的意思是“這個語句應該返回實體實例”。 (與行包裝器相反。)您將返回一個 object 查詢。
現在,什么是“它”? 嗯,Client 是生成的 ObjectContext 的屬性,類型為 ObjectQuery<Client>。 您可以在 model(擴展名為.Designer.cs 的文件)的 codegen 文件中查看 Client 的源代碼:
/// <summary>
/// There are no comments for Client in the schema.
/// </summary>
public global::System.Data.Objects.ObjectQuery<Client> Client
{
get
{
if ((this._Client== null))
{
this._Client = base.CreateQuery<Client>("[Client]");
}
return this._Client;
}
}
private global::System.Data.Objects.ObjectQuery<Client> _Client;
您在那里看到實體 SQL 嗎? 不仔細看很容易錯過。 我將它復制到這里:
"[Client]"
我找不到此語法的文檔,但這主要是因為搜索方括號而不是任何其他實體 SQL 關鍵字對於大多數搜索引擎來說有點困難。 與 T-SQL 一樣,方括號似乎意味着“將它們之間的所有內容視為標識符”。 但該聲明似乎是以下的簡寫:
"SELECT VALUE it FROM MyEntities.[Client] AS it"
所以現在你知道“它”是從哪里來的了。
你從哪里得到那個樣本? 這樣做的正常方法是:
string email = "xxx@hotmail.com",
pw = "xAdxar12s";
var qry = from client in clientContext.Client
where client.email == email
&& client.password == pw
select client;
Console.WriteLine(qry.Count());
這給了你 static 打字等 - 而且更友好!
(注意:檢查您是否using System.Linq;
在文件頂部)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.