Nano Hash - криптовалюты, майнинг, программирование

Linq to SQL для нового проекта

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

У меня такое ощущение, что Entity Framework более раздутый и излишне сложный, что частично объясняет причину, по которой я думал о переходе с LINQ to SQL ... но, как я уже сказал, это может быть только восприятием с моей стороны, поскольку я не знаю '' Я так часто использовал Entity Framework.

Итак, что люди порекомендовали бы мне использовать для запуска нового проекта сегодня (обратите внимание, что это приложение будет в ближайшие годы)?

Ура Энтони

РЕДАКТИРОВАТЬ: Мы являемся магазином SQL Server, поэтому нам не нужен независимый поставщик базы данных.

Также является ли общепризнанный лучший способ абстрагироваться от банкомата доступа к данным с помощью шаблона репозитория, который работает с объектами моего домена?


  • Обсуждали много раз. См .: stackoverflow.com/questions/364740/ linq-2-sql-or-linq-entity Кстати, ваше восприятие верное. Не используйте EF, если вам не нужны поставщики абстрактных баз данных и ваше приложение работает только на SQL Server. 25.08.2009
  • Тем не менее, существует множество досадных ограничений L2S, таких как свойства навигации, которые не являются IQueryable, или отсутствие возможности извлекать вложенные структуры данных с более чем двумя уровнями (например, Customer / Orders / OrderItems) в одном запросе SQL. Один размер не подходит для всех, и я бы настоятельно рекомендовал специально изучить все известные ограничения L2S и EF и посмотреть, насколько они соответствуют требованиям для конкретного проекта, прежде чем принимать решение. Здесь нет разумного дефолта. 30.09.2009

Ответы:


1

LINQ to SQL - это быстрое развитие и простота. Если ваша модель данных сложна или может стать такой, вам будет лучше использовать более надежную структуру.

Тем не менее, более важным, чем ваш инструмент доступа к данным, является то, насколько хорошо вы абстрагируете его от остальной части кода. Если все сделано правильно, вы сможете начать с LINQ to SQL и переключаться, когда вы его перерастете (или когда выйдет EF 2 4).

24.08.2009

2

Обратите внимание, что EF 1 далек от завершения. В нем отсутствуют все виды функций, которые вы найдете в LINQ to SQL, одна из наиболее важных - это фактические свойства внешнего ключа (вы можете представить, что их нет в EF 1?)

Кроме того, EF 4 в значительной степени будет иметь все функции LINQ TO SQL, и оба будут генерировать относительно сопоставимый (с точки зрения кода) внешний API, поэтому, если вы не кодируете очень специфичные для LINQ to SQL API, переход на него должен быть относительно простым. EF4 позже, просто заменив LINQ to SQL .dbml эквивалентом EF4.

24.08.2009
  • Есть некоторые дополнительные сложности, связанные с синтаксисом обновления / вставки, отслеживанием изменений и разрешением конфликтов параллелизма, которые не следует игнорировать. 25.08.2009
  • Конечно, но если вы инкапсулируете эти части и в основном используете LINQ, переход не должен вызывать слишком много головной боли. 25.08.2009

  • 3

    Linq to SQL лучше всего работает в парадигме активной записи / одной таблицы на класс. Если вам нужно распределить свой класс по нескольким таблицам или поддерживать сложное наследование, это может быть не лучшим выбором. Кроме того, Linq to SQL изначально не поддерживает отношения «многие ко многим» (есть обходные пути).

    Если ни один из этих вариантов не может повлиять на вас, то Linq 2 SQL может быть хорошим выбором. Это отличная облегченная стратегия доступа к данным.

    Linq to SQL можно очень хорошо использовать для реализации шаблона репозитория с учетом вышеуказанных ограничений. Google представит несколько жизнеспособных примеров репозитория Linq.

    24.08.2009

    4

    Вы посмотрели на Subsonic - теперь в версии 3 это в основном linq to sql DAL, который позволяет получить полный linq to sql всей вашей базы данных менее чем за 5 минут. И он работает с шаблонами T4, поэтому, если вы хотите добавить в шаблоны, это ДЕЙСТВИТЕЛЬНО ПРОСТО

    http://www.subsonicproject.com/

    25.08.2009

    5

    Я написал довольно длинное сообщение в блоге о выборе .NET ORM:

    .NET и ORM - Решения, решения

    По сути, NHibernate - ваш лучший выбор. Если вы настаиваете на чем-то простом, например LinqToSql, подумайте о SubSonic. Я бы не рекомендовал ни один из вариантов Microsoft: LinqToSql или EntityFramework.

    Решение о том, использовать ли шаблон репозитория или нет, зависит от ваших требований.

    29.08.2009
  • Я помню, что поддержка NHibernate LINQ была довольно ограниченной по типам запросов, которые она может обрабатывать (т.е. было довольно легко написать менее чем тривиальный запрос, и он не смог его обработать), и обычно авторы называли ее экспериментальной. Это изменилось? 30.09.2009
  • Я мог бы рассуждать о различных уровнях поддержки ORM для Linq, но я не видел ничего реального в отношении данных по этому поводу. Это обсуждение должно основываться на реальных данных, и, насколько мне известно, этих данных не существует. Похоже, что для сбора этих данных потребуется довольно много усилий. 30.09.2009

  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..