13 asp.net-mvc lambda entity-framework entity-framework-4.1 asp.net-mvc-3
我在数据库中有一个包含9列的表,如果需要,我希望能够只加载它的一些字段.
我如何使用Entity Framework 4做到这一点?
例如,我的表有以下字段:
ID, FirstName, LastName, FotherName, BirthDate, Mobile, Email
Run Code Online (Sandbox Code Playgroud)
我希望能够只获取这些列:
ID, FirstName, LastName
Run Code Online (Sandbox Code Playgroud)
我的项目是一个ASP.NET MVC 3应用程序,用SQLServer 2008 Express和EF 4.1.
jav*_*iry 29
假设您有一个包含此模型的表:
public class User{
public int ID {get; set;}
public string NickName {get; set;}
public string FirstName {get; set;}
public string LastName {get; set;}
public string FotherName {get; set;}
public DateTime BirthDate {get; set;}
public string Mobile {get; set;}
public string Email {get; set;}
public string Password {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
现在,你要取刚ID,FirstName,LastName,和FotherName.你可以用2种方式做到这一点; 第一种方法是将它们作为anonymous对象获取,看看:
var user = entityContext.Users.Where(u => u.ID == id)
.Select(u => new {
ID = u.ID,
FirstName = u.FirstName,
LastName = u.LastName,
FotherName = u.FotherName
}).Single();
Run Code Online (Sandbox Code Playgroud)
现在,您的返回值类型是anonymous,您可以使用它,例如:
var i = user.ID;
// or
var s = user.FirstName;
Run Code Online (Sandbox Code Playgroud)
以另一种方式(例如,当你想传递的对象作为模型的视图),可以定义一个新的类,(即UserViewModel),当您选择的对象,选择它作为一个UserViewModel.看:
public class UserViewModel{
public int ID {get; set;}
public string NickName {get; set;}
public string FirstName {get; set;}
public string LastName {get; set;}
public string FotherName {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
并在查询中,采取这个:
var user = entityContext.Users.Where(u => u.ID == id)
.Select(u => new UserViewModel {
ID = u.ID,
FirstName = u.FirstName,
LastName = u.LastName,
FotherName = u.FotherName
}).Single();
Run Code Online (Sandbox Code Playgroud)
看看他们之间只有一个区别,在labda表达式中,而不是u => new {}
我们正在使用u => new UserViewModel{}.祝好运.
| 归档时间: |
|
| 查看次数: |
22400 次 |
| 最近记录: |