Asp.net-Mvc
如何從 EF 中的表中僅選擇某些欄位
我在數據庫中有一個包含 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;另一種方式(例如當您想將對像作為Model傳遞給View時),您可以定義一個新類(即),當您選擇對象時,將其選擇為. 看:
UserViewModel``UserViewModelpublic 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{}. 祝你好運。