jayesh_n Ответов: 2

Какова альтернатива dataset для передачи строк нескольких значений между dal и bal в 3-уровневой архитектуре acrchitecture ?


I am writing 3 tier code in c# ado.net in asp.net

In DAL i am fetching sql table values in dataset

I have heard that passing dataset from DAL to BAL and BAL to presentation layer is not advisable taking into consideration the application's performance with regards to network bandwidth usage

What is the alternative to dataset ?

What I have tried:

Created method with dataset as return type in Dal

2 Ответов

Рейтинг:
0

Ramesh Kumar Barik

Извлеките только те данные, которые необходимы для привязки во внешнем интерфейсе и которые могут быть сделаны на стороне Sql Query / Sp.

В вашем слое DAL вы извлекаете данные из БД и заполняете набор данных. Вы можете вернуть набор данных в свой слой BAL. В слое BAL, если вы хотите реализовать некоторую бизнес-логику, вы можете реализовать ее там.


Рейтинг:
0

Abhipal Singh

Общепринятая в отрасли практика написания кода в BAL заключается в том, чтобы иметь правильно определенные объекты из DAL. Позвольте мне объяснить вам вышеприведенный один лайнер на примере.

Допустим, вы возвращаете набор данных, имеющий datatable, содержащий записи автомобилей. Каждая запись представляет собой автомобиль с полями типа Model, BHP, Type.

Model | BHP | Type
Lexus | 250 | Sedan
Jaguar| 600 | Sedan
Toyota| 550 | SUV

Если вы проанализируете приведенные выше данные, то увидите, что каждая строка представляет собой объект, представляющий автомобиль. Таким образом, вы можете заставить класс сказать:
public class Car
{
   public string Model { get; set;}
   public int BHP { get; set; }
   public string Type { get; set; }
}

Теперь вы можете заполнить каждую строку в вышеприведенный объект Car, а всю таблицу-в IEnumerable<Car>

Следуя описанному выше подходу, вы можете работать исключительно с объектами и избегать использования наборов данных/таблиц данных в вашем BAL и других более высоких уровнях в N-уровневых приложениях.

Самый простой способ добиться описанного выше преобразования-создать объектный картограф в DAL, который преобразует ваш DataTable в IEnumerable<Car> объект и вернуть его в свой бал