2010-05-17 5 views
1

Я недавно перешел на Linq2Sql, и все мои будущие проекты будут использовать Linq2Sql. Сказав это, я много исследовал, как правильно подключать Linq2Sql в дизайне приложения.Linq2Sql Best Practices

  • Что положить на какой слой?
  • Как вы создаете свои репозитории и сервисы бизнес-уровня?
  • Должен ли я использовать DTO по объектам Linq2Sql на уровне взаимодействия?
  • О чем я должен быть осторожен?
  • Какие проблемы вы столкнулись?

Я не нашел ни одного материала из твердого материала, который действительно говорил об одной единственной вещи, и у каждого есть свои мнения. Я с нетерпением жду ваших идей о том, как интегрировать/использовать Linq2Sql в проектах. Мой приоритет - техническое обслуживание [он должен быть подданным и когда несколько человек работают над одним и тем же проектом] и scalabilty [он должен иметь сфера эволюции].

Спасибо.

+0

Вы уверены, что хотите использовать LINQ to SQL? Мне нравится L2S, но когда вы также хотите использовать его в будущих проектах, возможно, Entitiy Framework 4 - лучший выбор. – Steven

+0

Тем не менее, я ответил на вопрос в течение недели назад, который может вас заинтересовать: http://stackoverflow.com/questions/2785506/linq-to-sql-web-application-best-practices. – Steven

ответ

4

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

Я буду стараться, чтобы дать вам ответы на некоторые вопросы,

Я думаю, вы должны спросить первый , какие приложения вы хотите создать; как только сценарий станет ясным, у вас будет странная идея о количестве транзакций или запросов, которые вы собираетесь выполнять против базы данных (или хранилища).

Linq может быть чрезвычайно полезен для абстрактного доступа к данным, обработки контекста и объектов, но все идет за счет стоимости. Объекты будут созданы со стоимостью, и вам действительно нужно подумать об этом.

Если ваше приложение имеет «хороший-не слишком тяжелый» доступ к данным, Linq станет идеальным инструментом для экономии времени на ваше приложение.

Если ваше приложение полностью основано на извлечении или обработке данных, Linq также будет отличным.

Если ваше приложение обрабатывает огромные блоки данных (проверьте ваше приложение), вам нужно будет сделать что-то еще, чтобы избежать создания множества объектов, которые могут оказаться бесполезными.

Что это значит? Вам нужно знать, что означает интеллектуальный доступ к данным ... и это заставит SQL работать для вас (в случае SQL); если вы собираетесь делать много соединений, перекрещивать информацию и прочее, создавайте хранимые процедуры, которые создадут для вас результат данных, а затем получите его с помощью Linq или SqlCommand или SqlDataAdapters и т. д.

Что нужно сделать для чего слой? Поскольку Linq дает вам абстракцию доступа к данным, вы можете в значительной степени разместить свой код, в котором это требует бизнес-логика. Существует множество хороших методов структурирования вашего кода; Linq (как и любая другая инфраструктура сущности или библиотеки доступа к данным) поместится в нужное место. Избегайте всякий раз, когда возможно прямое выражение linq в ваших элементах управления (asp.net имеет множество элементов управления с источниками данных linq), вместо этого ваш «запрос» завершает класс обслуживания, который может быть создан вашим кодом или элементами управления в качестве источника данных объекта.

Что я нашел? Pure Linq не всегда возможен в больших приложениях или проектах (так что вы получите много вещей в linq и некоторые из предыдущих более простых решений для доступа к вашим репозиториям), но поможет вам сэкономить время. Реализация хранимых процедур является ДОЛЖНЫ, если вы хотите поставлять отличные приложения.

Надеюсь, что этот комментарий поможет. Cheers.

+1

Кстати, вы должны использовать Linq для сущностей вместо Linq to SQL, если вы хотите что-то, что масштабируется в .net framework. – rodrigoelp

+1

Это зависит от того, что вы подразумеваете под «шкалами». Stackoverflow швы хорошо масштабируются, и он использует LINQ to SQL. – Steven

+0

Вы правы, Стивен ... Я имел в виду версию каркаса .net, а не масштабирование в производительности или что-то в этом роде. К сожалению: P – rodrigoelp