C# DAL... not just the needs of a single program
.Весь смысл C # DAL как отдельной сборки заключается в том, что его можно повторно использовать в любом приложении .NET.Основная проблема, с которой вы столкнетесь, заключается в том, что если база данных изменяется, то DAL должен измениться (один раз), а затем все приложения, зависящие от DAL, должны быть повторно развернуты с новым DAL.У вас также есть проблема, заключающаяся в том, что DAL не может использоваться приложениями, отличными от .NET.
Хорошо, так как же вы можете централизовать DAL, чтобы вам не пришлось повторно развертывать его для каждого приложения??Подумайте, SOA.Вы можете создать сервис WCF, содержащий DAL (и, вероятно, BLL).Все ваши приложения (если вы используете веб-службы, даже те, которые не являются .NET) могут использовать эту службу.Когда база данных изменяется, вы обновляете службу WCF и развертываетесь один раз.Просто убедитесь, что вы не вносите никаких изменений!Создайте MyMethod2, если вам нужно добавить / изменить функциональность.
Примечание. Когда вы слышите n-уровень, он обычно относится к трехуровневому, где каждый уровень представляет собой отдельное программное обеспечение и обычно на отдельных серверах:презентация (UI), приложение (ваш BLL / DAL), данные (ваша база данных SQL).Эта архитектура имеет свои достоинства.
We'd rather not add another layer to our application
.Итак, трехуровневый может быть не лучшим подходом в вашем случае.
neither do we want to go back and modify code everytime we make a db change
Тогда то, что ваши сотрудники DBA предложили, является единственным способом.
Однако учтите это: изменениехранимая процедура так же, как изменение кода?Это в основном то же самое.Хранимые процедуры SQL часто не контролируются версиями и не тестируются, но они должны быть.SQL не обладает таким богатством, как .NET.WCF можно легко масштабировать в веб-ферме.Как только вы учтете эти и другие причины, возможно, стоит перейти на трехуровневый подход / SOA.
Это действительно зависит от размера вашего проекта, навыков персонала, будущего роста и т. Д., И это что-тотолько вы можете определить.