В чем преимущество EntityFramework если бд просто можно создать сразу на серваке и згрузить на dategrid нажав на кнопку

Я учусь писать ИС по патерну MVP. Я создал сущности и загрузил их на sql server с помощью EntityFramework

class context:DbContext
    {
        public context() : base("Connection") { }
        public DbSet<FruitStorage> FuitStorages { get; set; }
        public DbSet<Sotr> Sotrs { get; set; }
        public DbSet<Apple> Apples { get; set; }
        public DbSet<Сell> Сells { get; set; }
        public DbSet<Сhamber> Сhambers { get; set; }
       
    }

после вывел на DateGrid таким образом так вот вопрос: Зачем делать все эти классы, если можно просто подключить бд и загрузить все на datagrid с помощью кнопки

   public Form1()
        {
            InitializeComponent();
            db = new context();
        }
        context db;
        private void фруктохранилищеToolStripMenuItem_Click(object sender, EventArgs e)
        {
            var fruit = new Form1<FruitStorage>(db.FuitStorages);
            fruit.Show();
        {

Ответы (1 шт):

Автор решения: Alexander Petrov

Для работы с любыми СУБД нужно знать язык запросов этих СУБД. Например, для реляционных это будет SQL, для NoSql - свои языки.

Entity Framework - это ORM. Так вот ORM позволяют абстрагироваться от конкретных диалектов языков запросов и от знания устройства СУБД. Достаточно знать один язык программирования, например, C#.
На самом деле, без знания языка запросов и внутреннего устройства СУБД результат, в большинстве случаев, будет плачевный, но попытаться стоит...

Entity Framework - это LINQ ORM. Сила ЛИНКа - в композябельности запросов! Why LINQ beats SQL. С его помощью можно на лету составлять запросы в зависимости от некоторых условий. Без LINQ придётся либо конкатенировать строки, либо писать динамический SQL, либо ещё как-то извращаться.
Хотя есть и другие способы составления запросов на лету, как например сделано в (N)Hibernate.

можно создать сразу на серваке

Как именно создаёте на серваке? Вводом DDL-команд: create database ..., create table ...? Для этого нужно знать SQL. EF освобождает кодо-макак от этого.
Возможно, создаёте с помощью некоего дизайнера? Для этого нужно освоить этот дизайнер (что превращает вас в GUI-мартышку).

и загрузить на dategrid нажав на кнопку

Код загрузки откуда взялся? Вероятно, был сгенерирован неким дизайнером/визардом? А если возникнет необходимость отфильтровать данные, как-то изменить, что-то ещё сделать - дизайнер/визард сможет это сделать?
Хм, всю таблицу целиком грузить на клиента? А если там миллионы строк и гигабайты данных? Их нужно отфильтровать, выбрать только нужное. Тут-то LINQ-подобные ORM и проявляют свою мощь.

→ Ссылка