Linq-to-SQL против Entity Framework в подходе, основанном на базе данных - PullRequest
0 голосов
/ 26 января 2012

Я запутался в том, что отличает Linq-to-SQL от Entity Framework, когда следовал первому подходу к базе данных, поскольку не могу найти каких-либо четких различий.

В моем случае, когда я использовал Linq-to-SQL, я использовал для создания таблиц, затем я использую Linq-to-SQL для создания классов, представляющих таблицы, и теперь, когда я переключаюсь на Entity Framework, я все еще следую те же шаги (создание таблиц базы данных, затем создание связанных классов с использованием EF).

И я взаимодействую с этими классами одинаково, например, я использовал для запроса класса User, используя тот же синтаксис и подход, но один раз, когда класс User был создан с использованием Linq-to-SQL, а другой время, когда оно было создано с использованием EF, , так в чем же разница ?

        public IQueryable<User> findstudents(string term)
        {
            return from student in entities1.Users
                   where student.UserID.Contains(term)
                   select student;

        }

Второй вопрос Если я использую EF для сопоставления таблиц с классами, все еще возможно ли использовать Linq-to-SQL в том же приложении для запроса классов EF?

1 Ответ

9 голосов
/ 26 января 2012

LINQ - это базовая технология - это синтаксис, который дает вам опции SQLish-запроса в C #, - это полностью независимо от того, используете ли вы Linq-to-SQL или EF. Поэтому, если вы хотите запрашивать ваши классы данных с использованием синтаксиса LINQ - вы можете сделать это с обеими инфраструктурами - но как только вы используете Linq-to-SQL и как раз вы используете Linq-to-Entities. Вы не можете использовать Linq-to-SQL для модели Entity Framework EDMX.

Великолепно Linq-to-SQL

  • если вам нужно очень простое отображение 1: 1 - одна таблица соответствует одному классу в вашей доменной модели
  • если вам больше ничего не нужно, кроме SQL Server (Linq-to-SQL больше ничего не поддерживает)
  • если вы хотите быстро начать работу

С другой стороны Entity Framework

  • поддерживает несколько бэкэндов (SQL Server, Oracle, Firebird - другие, вероятно, последуют)
  • поддерживает полную концептуальную стратегию моделирования данных - вы определяете физическую модель в базе данных, концептуальную модель в вашем приложении и отображение между этими двумя
  • дает вам возможность обрабатывать такие вещи, как сопоставление одного бизнес-объекта с несколькими таблицами
  • поддержка таблиц на иерархию и сценариев наследования таблиц на класс
  • поддержка обновления / обновления вашей модели (EDMX-файл) из базы данных при изменении ситуации (в Linq-to-SQL вам, в основном, нужно удалить или воссоздать эти вовлеченные сущности - таким образом потерять все ваши настройки, которые вы, возможно, сделали)

Вкратце: Linq-to-SQL - это отличный, простой и простой ORM для SQL Server - используйте его, если он делает все, что вам нужно. Entity Framework - это совсем другой зверь, гораздо более способный, но и более сложный, гораздо больший - идеально подходит для вашего следующего критически важного приложения, но, вероятно, излишним для вашего личного блога: -)

Если вы хотите создать что-то «ориентированное на будущее» и использовать технологию «ИЛИ», которую Microsoft продвигает в будущее, тогда вам следует использовать Entity Framework. Особенно в версии 4 он также намного проще в использовании, гораздо более компактен и полезен, чем когда-либо прежде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...