Я использовал Microsoft Enterprise Library, поскольку до того, как он был помечен как таковой для абстрагированного доступа к данным, вместо написания моего собственного DAL, Первоначально я просто импортировал один файл (sqlhelper.cs) в свои проекты, но затем более поздние версии требовали, чтобы я ссылался на всю dll, если только я не хотел много работать над удалением необходимых функций.
Я предполагаю, что новая версия Enterprise Library будет выпущена через несколько месяцев после выхода .NET 4.0. Использование моей библиотеки в нашей компании, скорее всего, отличается от традиционного использования, мы разрабатываем и разрабатываем веб-приложения и приложения для Windows для ряда клиентов. Мы либо передаем готовые проекты внутренним разработчикам для поддержки, либо, если это меньший клиент, мы будем поддерживать приложения.
Из-за характера бизнеса мне посчастливилось "начать с нуля" довольно много времени при разработке нового приложения, в отличие от привязки к обновлению одной и той же базы кода. Следующий проект, вероятно, задаст тот же вопрос о себе, следует ли снова использовать Microsoft Enterprise Library? Мы используем только блоки доступа к данным, и это действительно экономит время при разработке. В то же время я задаюсь вопросом, сколько накладных расходов и сложности я добавляю в проект, используя объекты.
Заранее благодарю вас за ваши предложения.
Обновление:
В обсуждении здесь действительно есть вопрос, который я пересматриваю - это может быть меньше об облегченных абстракциях для доступа к Хранимым Procs, но более крупный архитектурный вопрос о том, почему они все еще привязаны к модели N-Tier.
Для меня, если дело доходит до того, какая база данных используется в приложении. В классическом мире 3-Tier/N-Tier база данных представляет собой независимое хранилище информации о компании. Различные приложения (Web, Desktop и т.д.) Используют общий доступ и доступ к общей платформе хранения. В этом случае хранимые процедуры имеют смысл, поскольку они действуют как уровень абстракции между различными приложениями и таблицами.
Для других проектов база данных является эксклюзивным постоянным хранилищем большего приложения. Пользовательский интерфейс или другие типы доступа (включая веб-службы, удаленные и т.д.) Необходимы для прохождения BLL приложения. Это сценарий, который мы чаще разрабатываем из-за характера нашего бизнеса.
Учитывая этот вывод, я собираюсь создать два прототипа, используя SubSonic и другие LINQ. Хотя Im обеспокоен накладными расходами и потерей точности в LINQ, значительное сокращение кода, необходимого для доступа к данным, и согласование с типом проектов, которые мы разрабатываем, заслуживают внимания.