Birazdan o zaman iBatis bazı nesneye eşleştiren nasıl bütünüyle kontrol almak istiyorum sizi anlasalardı.
Bunu, ITypeHandlerCallback ile yapabilirsiniz. "3.5.5. Özel Tip İşleyicileri" bölümünde PDF documentation tam bir açıklama için bir göz atın.
DataTables ile benzer bir şey yaptım. Sizin uygulaması buna benzer görünebilir:
class DataTableBuilder : ITypeHandlerCallback
{
public object GetResult(IResultGetter getter)
{
IDataReader reader = getter.DataReader;
// (A) define whatever type you want to
// (B) read rows from DataReader and populate your type from (A)
while (reader.Read())
{
// iterate over the columns of the current row
for (int i = 0; i < reader.FieldCount; i++)
{
// populate your type from (A)
}
}
return ...; // return your type from (A)
}
// implement the other members of ITypeHandlerCallback
// the implementation below actually worked for me
public object NullValue { get { return null; } }
public void SetParameter(IParameterSetter setter, object parameter) { }
public object ValueOf(string s) { return s; }
}
Son bir not: iBatis veri aktarım nesneleri (DTOs) oluşturmak için gayet iyi. Yukarıdaki gibi bir şey denerseniz, bir işletme nesnesi yaklaşımına doğru ilerlemiş olabilirsiniz. Bu iBatis ile acı verebilir. Şu anda (iyi ... bir kaç aydır, zaman eksikliği nedeniyle) NHibernate'i alternatif olarak değerlendiriyorum. Bence NHibernate, iBatis'ten çok daha sorunsuz bir şekilde iş objesi yaklaşımlarını ele alıyor.