簡體   English   中英

搜索正確的linq to sql查詢

[英]Searching for the proper linq to sql query

我正在使用C#在Visual Studio 11中為庫創建一個簡單的應用程序。

簡而言之,它與數據庫(SQL Server)交互以在數據庫中注冊一本新書。

系統會提示用戶輸入書名,作者,語言,年份,這本書的出版,以及這些書ID.All是在一個叫做表列BookInformation 還有另一個表稱為Categories 目前,該表根本不重要,因為該表的功能尚未實現。

我們總是在談論書籍,而不是雜志(例如)。

我想問你如何進行正確的查詢,以便在一行中顯示存儲在數據庫中的每本書的所有信息。

到目前為止,我所做的是:

var allBooks = from p in db.BookInformation
               where p.CategoryId == "BOOKS"
               orderby p.BookName
               select p;

        Console.WriteLine("All books in database:");
        foreach (var item in allBooks)
        {
            Console.WriteLine(" - {0}, {1}, {2}, {3}, {4}", item.BookName, item.Author, item.Year, item.Language, item.BookId);
        }

它給出了非常奇怪的結果,並且很明顯是錯誤的。我該怎么辦,有什么想法嗎?

謝謝

編輯-這是它產生的SQL

SELECT 
    [Extent1].[BookId] AS [BookId], 
    [Extent1].[BookName] AS [BookName], 
    [Extent1].[Author] AS [Author], 
    [Extent1].[Publisher] AS [Publisher], 
    [Extent1].[Year] AS [Year], 
    [Extent1].[Language] AS [Language], 
    [Extent1].[CategoryId] AS [CategoryId], 
    [Extent1].[TimeOfRegistrating] AS [TimeOfRegistrating] 
FROM 
    [dbo].[BookInfoes] AS [Extent1] 
WHERE 
    N'BOOKS' = [Extent1].[CategoryId] 
ORDER BY 
    [Extent1].[BookName] ASC

加載Sql Profiler的實例,開始分析,運行C#LINQ代碼,並捕獲其生成的SQL。

然后,確定為什么它生成的sql無法產生正確的結果。 該linq查詢與它們來的一樣簡單。 也許您的數據不是您期望的那樣。

對於沒有分析器的人,這是其他選擇... http://www.thereforesystems.com/view-query-generate-by-linq-to-sql/

更新資料

根據您的sql,循環和writeline,您應該從控制台中看到與以下sql大致相同的內容,與您的sql相同,只是刪除了不輸出到控制台的字段:

SELECT 
    [Extent1].[BookName] AS [BookName], 
    [Extent1].[Author] AS [Author], 
    [Extent1].[Year] AS [Year], 
    [Extent1].[Language] AS [Language], 
    [Extent1].[BookId] AS [BookId]
FROM 
    [dbo].[BookInfoes] AS [Extent1] 
WHERE 
    N'BOOKS' = [Extent1].[CategoryId] 
ORDER BY 
    [Extent1].[BookName] ASC

如果您不是,那么我們會缺少有關原因的信息,因為到目前為止您說的所有內容都指向兩者具有大致相同的輸出。

另一個要注意的是, allBooks.Count()應該返回與sql返回的行數相同的數字。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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