2016-12-21 54 views
0

我正在使用實體框架,我有一個名爲HomesClass的類,我在我的編輯方法中的這一行:ASP.NET轉換類爲'System.Data.Entity.Infrastructure.DbSqlQuery <Project.Models.HomesClass>'

HomesClass homesClass = db.Data.Find(id); 

所以我試圖做另一行這樣

HomesClass homesClass = db.Data.SqlQuery("SELECT ...."); 

但後來我得到這個錯誤:

Cannot implicitly convert type 'System.Data.Entity.Infrastructure.DbSqlQuery<Project.Models.HomesClass>' to ‘Project.Models.HomesClass' 

我問題是如何正確地將其轉換?

回答

0

您的原始代碼失敗。
DbSqlQuery的一個實例只是一個持有查詢的對象,而不是執行它的結果。
您需要執行查詢,以便將結果轉換爲實際上包含您之後數據的對象。您可以通過調用DbSqlQuery實例上的方法來執行查詢,並要求它執行查詢。

您正在失去FirstOrDefaultAsync

HomesClass homesClass = await db.Data.SqlQuery("SELECT ....").FirstOrDefaultAsync();

如果你想有一個清單:

List<HomesClass> result = await db.Data.SqlQuery("SELECT ....").ToListAsync();

+0

但難道不這樣只得到第一行? – user979331

+0

你的代碼顯示你只需要一個對象。如果你想要不止一個,你需要一個列表。 – Klinger

+0

非常真實,直到我把它放進去,我才意識到,哈哈 – user979331

-1

您需要將一種類型轉換爲另一種類型。

下列選項可用於:

  1. 隱/顯式轉換操作符。

  2. 編寫一個擴展方法將OneType轉換爲另一個。因爲db.Data.SqlQuery("SELECT ....")轉化爲DbSqlQuery類型的實例,它沒有任何關係的HomesClass

  3. 使用第三方庫像AutoMapper

相關問題