2009-03-03 15 views
1

Bu soru başka bir soruya ilişkin olarak ise var: Using iBATIS.NET with generic custom collection interfaces and UnityiBATIS.NET, ICollection ile çalışabilir mi? Ben

sorun iBATIS.NET yalnızca özel bir koleksiyon populasyonunun artması gibi görünüyor (yani QueryForObject ("Select_Foo") Barlar özel koleksiyona sahiptir ki) eğer Bir arayüz değil, özel koleksiyonun somut bir örneğidir. Bunun iBATIS.NET'in bir kısıtlaması olup olmadığını veya bunu yapmanın bir yolu olup olmadığını bilen var mı?

sayesinde

Paul

cevap

1

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.

İlgili konular