2017-04-15 112 views
1

我得到了開發足球桌管理系統的任務。我決定用asp.net mvc來做。唯一的要求是使用原始SQL查詢。所以這意味着我不能使用linq或lambda。我願做這樣的事情:實體框架將原始SQL查詢綁定到模型類

using (var context = new FootballTableContext()) 
{ 
    var players = context.Database.SqlQuery<PlayerViewModel>("SELECT Vardas, Pavarde FROM ZAIDEJAS").ToList(); 
} 

但執行此代碼後,我得到的PlayerViewModelnull值的列表。

ViewModel類:

public class PlayerViewModel 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
} 

Context類:

public class FootballTableContext : DbContext 
{ 
    public FootballTableContext() : base("DefaultConnection") { } 
} 

所以我的問題是如何在查詢綁定到我的視圖模型?

回答

2

做這樣的:

var players = dbContext.Database 
    .SqlQuery<PlayerViewModel>("SELECT Vardas as FirstName, Pavarde as LastName FROM ZAIDEJAS") 
    .ToList<PlayerViewModel>(); 

它被稱爲SQL queries for non-entity types

+0

但是現在它不會編譯:'方法'Database.SqlQuery (string,params object [])'的類型參數不能從用法中推斷出來。嘗試明確指定類型參數。 ' – Mazas

+0

請看我的編輯。我很確定,只要列名已被指定,它就可以只用'ToList()'。我想你可以測試兩種方式並讓我知道。 – CodingYoshi

+0

是的,它現在有效。但也許有可能添加一些屬性,而不是使用別名viewmodel? – Mazas