[英]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.