Как выбрать только некоторые поля из таблицы в 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.

2 ответов


Предположим у вас есть таблица с этой модели:

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 способом; первый способ-получить их как


может быть много способов сделать эту работу, но с помощью Automapper пакет NuGet-самый простой, который я испытал.

  • первый установка Autmapper пакет NuGet для вашего проекта из проводника пакетов NuGet.
  • второй: сделать простой ViewModel, которая содержит только необходимые атрибуты:

    public class UserViewModel {
        public int ID {get; set;}
        public string FirstName {get; set;}
        public string LastName {get; set;}
    }
    
  • третий: инициализируйте свой картограф только один раз в app_start класс:

    namespace SampleProject.App_Start {
        public class AutoMapperConfig {
            public static void Initializer() {
                AutoMapper.Mapper.Initialize(cfg => {
    
                    cfg.CreateMap<User, UserViewModel>()
                });
             }
         }
    }
    
  • четвертый добавить это запись в Global.asax.cs:

    namespace SampleProject
    {
        public class MvcApplication : System.Web.HttpApplication
        {
            protected void Application_Start()
            {
                AreaRegistration.RegisterAllAreas();
                GlobalConfiguration.Configure(WebApiConfig.Register);
                FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
                RouteConfig.RegisterRoutes(RouteTable.Routes);
                BundleConfig.RegisterBundles(BundleTable.Bundles);
    
                // AutoMapper Initializer
                App_Start.AutoMapperConfig.Initializer();
            }
        }
    }
    
  • пятый: используйте его в контроллере, где вы хотите, как это:

    namespace SampleProject.Controllers
    {
        public class UsersController : Controller
        {
            private DataContext db = new DataContext();
    
            public ActionResult Index()(
                var model = AutoMapper.Mapper.Map<List<UserViewModel>>(db.User.ToList());
                return View(model);
    
            }
        }
    }
    
  • последние: вы можете создать столько карт, сколько вы хотите между Models и ViewModels инициализируем их один раз в app_start ' s AutoMapperConfig класса и использовать их там, где вы хотите с простым строка кода.

также вы можете найти много помощи о Automapper если вы ищете об этом. Его основной веб-сайт здесь.




важно:

я разработчик ASP.NET MVC 5. Automapper отлично работает для меня каждый раз. Я не могу проверить это на MVC 3 или старше MVC 5.