Вы использовали бы LINQ для SQL для новых проектов?

Попробуйте этот нарисованный файл и установите его в качестве фона для желаемого вида:

Ribbon.xml

<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:viewportWidth="640"
    android:viewportHeight="640"
    android:width="24dp"
    android:height="24dp">
    <path
        android:pathData="M526.63 383.78l-466.32 0 0 -234.7"
        android:fillColor="#3498DB" />
    <path
        android:pathData="M526.63 383.78L417.45 266.43 526.63 151.12 60.31 149.08"
        android:fillColor="#3498DB"/>
</vector>
9
задан cletus 24 February 2009 в 23:25
поделиться

11 ответов

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

LINQ к SQL (L2S) очень универсален, но это чувствует себя немного слишком основным с моей точки зрения. В большинстве случаев это делает хорошее задание при выполнении простых вещей, но как только Вы спрашиваете немного больше из него, это становится дорогим. Это не во всем плохая вещь. Я на самом деле думаю, что LINQ к SQL на самом деле добавляет Платформу Объекта приятно.

Возьмите Автоматическую Подкачку страниц с LinqDataSource, например. Если Вы не указываете Порядок/группа К тому времени, это довольно экономично. Упорядочивание броска или группировка в соединение и Вы начинаете добираться, скачок в производительности (становится очень болтливым). Затем в значительной степени необходимо записать собственную реализацию подкачки страниц (который не ужасно тверд, я признаю).

Я буду первым, чтобы признать, что L2S имеет преимущество перед Платформой Объекта с точки зрения качества сгенерированного T-SQL (я должен, так как L2S конкретно создается для запросов SQL Server), и концептуально и symantically, большая часть LINQ к SQL подобна EF, но где Вы врезаетесь в стену, находится на расширении потребностей и соображения для более сложных требований реализации.

Если бы я должен был запустить с нуля и принять решение посвятить персональное время разработки, то я выбрал бы Платформу Объекта. Интересно достаточно я работаю над проектом в данный момент, который использует L2S, и он разрабатывается для масштабирования, nad обрабатывают большие нагрузки, но когда мы поражаем некоторые более "творческие" требования, мы часто вынуждаемся подробно остановиться на Металле SQL (например, many-many отношения).

Так.. короче говоря.. Я приблизился бы к нему таким образом:

a) изучите LINQ SQL как введение (к шаблонам и технологии Microsoft ORM).. это получает Вас знакомый с большинством основных принципов, которые совместно используются с Платформой Объекта и вкусом стиля LINQ, запрашивающего (на любителя, если у Вас есть знания в T-SQL),

b) после того как Вы разобрались с LINQ к SQL, я рекомендовал бы перепрыгнуть к Платформе Объекта для изучения дополнительных выгод (eSQL и т.д.)

c) Реализуйте проект подтверждения концепции в обоих и сравните результаты.

4
ответ дан 4 December 2019 в 07:36
поделиться

Выберите NHibernate. Это будет оставаться вокруг в течение некоторого времени как понятие или фактический ORM. Таким образом, будет полезно изучить обоих.

7
ответ дан 4 December 2019 в 07:36
поделиться

IMO, эта целая вещь была действительно унесена из пропорции.

Microsoft не заявляла, что LINQ к SQL будет мертв. Они более обозначенный, что это было бы объединено в Платформу Объекта.

Я сфокусировался бы на использовании Платформы Объекта как решение, зная, что так большая часть LINQ к SQL включится в него.

Прямо сейчас так или иначе действительно нет так большого различия. Самая большая жалоба - то, что Платформа Объекта не легка. Это действительно имеет значение, пока у Вас есть хорошее разделение между Вашими уровнями?

4
ответ дан 4 December 2019 в 07:36
поделиться

L2S, по моему скромному мнению, превосходен способ, которым это и как Вы сказали, не идет никуда. Корпорация, на которую я работаю, сделала это нашим стандартом для доступа к данным, и мы используем его для всего от мало 5 пользовательских нишевых приложений до 1 000 + пользовательские корпоративные приложения с большими результатами.

2
ответ дан 4 December 2019 в 07:36
поделиться

Я думаю цели EDM наше намного большее, чем те из LINQ к SQL. Если Вы ищете простой ORM затем, я думаю, что LINQ к SQL является способом пойти. Если Вы планируете создание в классах, которые имеют структуру наследования относительно таблиц базы данных, которые имеют реляционную структуру и делают другие усовершенствованные отображения, то EDM мог бы быть хорошим выбором.

2
ответ дан 4 December 2019 в 07:36
поделиться

Выезд SubSonic:

http://subsonicproject.com/

2
ответ дан 4 December 2019 в 07:36
поделиться

Стоит упомянуть, что этот сайт создается с помощью LINQ для SQL. Jeff говорил об использовании его на подкасте StackOverflow.

2
ответ дан 4 December 2019 в 07:36
поделиться

Я соглашаюсь с Echostorm. L2S хорош для Ваших потребностей. И довольно легко работать с...

1
ответ дан 4 December 2019 в 07:36
поделиться

L2S является потрясающей технологией, и я никогда не возвращался бы к старому ADO.

Но поскольку Вы упомянули, это берет заднее сиденье к L2E. L2S более, чем способен, и я имею, подали многочисленные заявки с ним и были невероятно рады. Но слушание, что это больше не будет совершенствоваться, поместило нож в мою сторону. Таким образом, я пошел для проверки L2E, и это - почти то же самое когда дело доходит до взаимодействия SQL, и во многих отношениях я нахожу это легче, не говоря уже о более эффективном с его обработкой отношения. С такими общими чертами кажется логичным выбрать L2E.

Я записал сообщение при переключении и сравнении этих двух платформ: http://naspinski.net/post/Getting-started-with-Linq-To-Entities.aspx

Я могу почти гарантировать, что Вы будете довольны любой из этих платформ, они - удача для разработки. Предотвращение простоты и ошибки является первоклассным. Я лично склонился бы к L2E, поскольку он будет разрабатываться более настойчиво thatn L2S.

2
ответ дан 4 December 2019 в 07:36
поделиться

Если Вы разрабатываете свое приложение правильно и изолируете Ваш уровень доступа к данным хорошо, необходимо пойти с L2S. Из того, что я вывожу из Вашего сообщения, это не большой проект, таким образом, L2S должен отвечать Вашим требованиям очень хорошо, тогда как простой ADO.NET просто нет - нет, и Платформа Объекта..., просто не используют его, хорошо? Так или иначе при изоляции DAL хорошо можно подкачать L2S к чему-то еще в будущем, если проект растет. и даже если L2S не идет никуда, он не идет никуда. MS прекратил вкладывать капитал в него, но это не собирается становиться удержанным от использования или что-то, таким образом, это - все еще безопасные инвестиции. С другой стороны, необходимо оценить NHibernate, который является простым и сформировавшимся.

1
ответ дан 4 December 2019 в 07:36
поделиться

Я активно использую L2S в своем текущем веб-проекте, и я считаю, что самое большое зависание, которое вы найдете, - это противоречивая документация, касающаяся наилучшего способа разработки n-уровневой базы данных.

Прежде всего, что Вы должны понимать, что объекты DataContext должны работать только до тех пор, пока единица работы , точка. Кроме того, DataContext не имеют состояния. Как только вы овладеете этими двумя принципами, использование LINQ в n-уровневой среде начнет хорошо работать.

С другой стороны, вы увидите, как многие люди рекомендуют некоторые очень и очень плохие способы использования Linq. НИКОГДА не делайте ваш DataContext статичным, это ошибка, которую я сделал на раннем этапе, и она творила чудеса, пока не заработала, тогда это было абсолютно ужасно с неправильным пересечением данных между различными сессиями и т. Д. Проще говоря, это, пожалуй, самый большой и самый гигантский запрет использования Linq, и его следует писать большими жирными буквами в каждом документе. Кроме того, сохранение DataContext в переменной Session является в равной степени плохой идеей.

Единственная другая неприятность, с которой я столкнулся при работе с LINQ, заключается в том, что при выполнении отключенного обновления необходимо использовать один и тот же DataContext во всем вызове. Например:

    public static void UpdateUser(UserLibrary.User user) {
        using (UserLibraryDataContext dc = new UserLibraryDataContext(_conStr))
        {
            UserLibrary.User newUser = (from user2 in dc.Users where user2.UserID == user.UserID select user2).FirstOrDefault();
            newUser.Email = user.Email;
            newUser.FirstName = user.FirstName;
            newUser.LastName = user.LastName;
            dc.SubmitChanges();
        }        

Вы не можете просто передать пользователя, созданного в другом текстовом тексте, и ожидать, что обновление будет работать, если только вы не установите DataContext.ObjectTrackingEnabled = false, что я бы не рекомендовал. Вместо этого в том же DataContext вы должны извлечь существующий объект, обновить его значения, а затем отправить эти изменения. Держите все подобные задачи в одном и том же DataContext.

Я бы порекомендовал L2S, хотя, как только вы преодолеете несколько проблем (как выше), это отличная технология и определенно экономит время. Однако я бы порекомендовал сделать тонкую обертку вокруг вашего DAL, чтобы вы могли легко измениться. Я рассматриваю (по экономическим причинам) портирование части моего кода для использования OpenAccess ORM -> MySql для части моего доступа к данным, и с правильно определенным уровнем эта задача займет у меня всего несколько часов.

2
ответ дан 4 December 2019 в 07:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: