Jadi saya telah membuat lapisan akses data melalui TDD dan telah mendekati sedikit masalah. Saya lebih suka tidak memulai jalan yang salah, jadi saya pikir saya akan meminta kalian untuk melihat apakah pikiran saya sejalan dengan arsitektur yang bersih.
Metode dalam Lapisan Akses Data saya (DAL singkatnya), cukup sederhana. Mereka sejalan dengan prosedur yang tersimpan dalam database (tidak ada cara lain untuk memanggilnya untuk menjaga hal-hal tetap bersih), dan mereka mengandung parameter yang sama dengan prosedur yang dilakukan. Mereka kemudian hanya terhubung ke database, dan mengembalikan hasil permintaan. Ini salah satu contohnya:
public int DeleteRecord(int recordId)
{
recordId.RequireThat("recordId").NotZeroOrLess();
List<SqlParameter> parameters = new List<SqlParameter>();
parameters.Add(new SqlParameter { ParameterName = "@RecordId", SqlDbType = SqlDbType.Int, Direction = ParameterDirection.Input, Value = recordId});
return this.ExecuteNonQuery("DeleteRecord", parameters.ToArray());
}
Ini berfungsi sempurna untuk jenis metode ini karena saya tidak melakukan sesuatu yang berarti dengan hasil yang ditetapkan. Saya hanya ingin memastikan perintah itu berfungsi, jadi saya akan mengembalikan hasil dari non-query, yang hanya baris yang terpengaruh, dan saya dapat memverifikasi logika menggunakan nomor itu.
Namun, katakan dalam metode DAL lain, saya ingin memuat catatan. Prosedur pemuatan saya akan dieksekusi selects
terhadap sekelompok tabel dan mengembalikan DataSet
, tetapi saya berjuang dengan apakah DAL saya harus membuat Objek Bisnis dalam metode menggunakan DataSet
, atau jika Objek Bisnis saya sendiri hanya harus memiliki Load()
metode yang mendapatkan DataSet
dari DAL, dan kemudian pada dasarnya mengisi sendiri
Melakukannya melalui DAL akan menghasilkan lebih sedikit logika dalam Objek Bisnis (meskipun ini hanya pilih logika, itu masih logis), tetapi akan memadatkan DAL sedikit dan membuatnya merasa seolah-olah benar-benar melakukan sesuatu yang seharusnya tidak boleh dilakukan. ' t sedang melakukan.
apa yang kalian pikirkan?