Организация Data Access Layer - C#
Формулировка задачи:
Здравствуйте.
В книгах как-то слишком абстрактно все описано, хочется хоть какой-то конкретики.
Понятно лишь, то, что клиент (слой представления)должен обращаться к ДАЛ, через интерфейс, дабы можно было менять слои в случае чего как хотим.
Вопрос в том, каким должен быть примерно этот интерфейс и к чему конкретно в ДАЛ он должен быть прикручен.
Я вижу это примерно так. В ДАЛ следует определить некий класс выступающий в роли Фасада (имеется ввиду паттерн "Фассад"), то есть класс, который рулит всем, что есть под капотом ДАЛ (запросы и прочее). К нему и надо прикрутить интерфейс ДАЛа.
Правильно ли я мыслю?
Далее. Не совсем понятно, в какой форме следует передавать данные из ДАЛ.
В ДАЛе хочется определить ДатаСет, который по идее и должен быть передан на слой представления. Но в каком виде? В неизменном? То есть как DataSet или же как DataTable? Или вообще в массивом? Не ясно.
Еще, думается мне, что в слое представления придется определять свой DataSet, а не создавать экземпляр того ДатаСета, который имеется в ДАЛ. Верно ли так поступать? Инкапсуляция же, слои не должны знать ничего друг о друге. Тем более, что ДатаСет, что в ДАЛе, скорее всего будет типизированым.
Итак, вынесу вопросы:
- Как примерно должен выглядеть интерфейс ДАЛа? Хочется увидеть пример.
- К чему прикручивать интерфейс в ДАЛе?
- В каком виде следует передавать данные на слой представления?
Решение задачи: «Организация Data Access Layer»
textual
Листинг программы
private static Expression Convert(Expression expression)
{
if (expression.NodeType == ExpressionType.Constant)
{
return expression;
}
LambdaExpression lambda = Expression.Lambda(expression);
Delegate lambdaDelegate = lambda.Compile();
return Expression.Constant(lambdaDelegate.DynamicInvoke(null), expression.Type);
}