簡體   English   中英

無法在Entity Framework中使用SQL查詢獲取數據

[英]Can't get data out using SQL query in Entity Framework

我正在嘗試使用以下SQL查詢從我的數據庫中獲取前兩列數據:

SELECT  Id, DomainUrl
FROM    ( SELECT    ROW_NUMBER() OVER ( ORDER BY Id ) AS RowNum, Id, DomainUrl
          FROM      SiteDatas
        ) AS RowConstrainedResult
WHERE   RowNum >= 1
    AND RowNum <= 10
ORDER BY RowNum

我正在使用實體框架並為行傳入參數,以便稍后可以通過ajax將其用作加載函數的滾動。 但是當我到達該行時,我收到一個錯誤:

var stores = db.SiteDatas.SqlQuery(SQL, parameters).ToList();

這是一個實體命令執行異常,它聲明數據讀取器與類型的指定模型(我的數據庫)成員“機器人”(我正在調用的那個之后的下一列)不兼容,沒有相應的數據讀取器中具有相同名稱的列。

我怎么能以一種可以序列化為json的方式獲得前兩列?

DbSet.SqlQueryDatabase.SqlQuery命令都返回實體實例。 您的SQL查詢必須返回與您的實體相同的列。 最有可能的是,您的SiteData類包含SQL查詢中不存在的Robots列。

如果指定了返回類型,仍可以使用Database.SqlQuery <T>返回數據。 返回類型不必是實體類型,只是具有與結果集相同的列名。

假設dbDbContext實例,您可以編寫:

public class MyResults
{
   public int ID{get;set;}
   public string DomainUrl {get;set;}
}

...

var stores = db.Database.SqlQuery<MyResults>(SQL, parameters).ToList();

暫無
暫無

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

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