2017-04-15 84 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