簡體   English   中英

ADO.Net 實體框架:這是什么?

[英]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 語法”? 我不知道為什么我必須使用它。 emailSELECT 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM