我在数据库中有一个包含 9 列的表,如果需要,我希望能够仅加载其中的某些字段。
请问如何使用 Entity Framework 4 做到这一点?
例如我的表有这些字段:
ID, FirstName, LastName, FotherName, BirthDate, Mobile, Email
我希望能够只获取这些列:
ID, FirstName, LastName
我的项目是
ASP.NET MVC 3
应用程序,与 SQLServer 2008 Express
和 EF 4.1
.
最佳答案
假设您有一个具有此模型的表:
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;}
}
现在,您只想获取
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();
现在,您的返回值类型是
anonymous
,您可以使用它,例如:var i = user.ID;
// or
var s = user.FirstName;
以另一种方式(例如,当您想将对象作为 模型 传递给 View 时),您可以定义一个新类,(即
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;}
}
并在查询中,采取这个:
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();
看那只是一区别在于它们之间,在labda 表达式中,而不是
u => new {}
我们正在使用 u => new UserViewModel{}
.祝你好运。
关于asp.net-mvc - 如何从 EF 的表中只选择一些字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7356180/