Partial classes and data access code

I have many classes for accessing data in one of my projects, but these classes become extremely cumbersome because of code that retrieves data from data readers.

My code usually looks like this:

// Execute the data reader
using (DbDataReader reader = command.ExecuteReader())
{
  while (reader.Read())
  {
     obj = this.FillDataReader(reader);
     objlist.Add(obj);
  }
}

internal SomeObject FillDataReader(IDataReader dr)
{
   SomeObject obj = new SomeObject ();


   if (!dr.IsDBNull(dr.GetOrdinal("objectID")))
   {
     obj.ID = dr.GetInt32(dr.GetOrdinal("objectID"));
   }

   return obj;
}

Some of the Fill methods easily fall into 400 lines, so is there a way to separate them? Are partial classes allowed? In an ideal world, I would use ORM, but, unfortunately, I cannot afford the time to learn how to use it.

+3
source share
3 answers

, Fill. .

, ORM - , , , .

, LINQ to SQL , , , VS 2010/.NET 4.

Entity Framework, VS 2010/.NET 4. , .

, 400+ ? , ? - (, ADO.NET Fill), !

+4

, . , ?

0

, .

:.

 public int GetIntOrDefault(this DataReader dr, string fieldName, int defaultValue){
     var value = dr.GetOrdinal(fieldName);
     return (!dr.IsDBNull(value)) ? dr.GetInt32(value) : defaultValue;
 }

 internal SomeObject FillDataReader(IDataReader dr)
 {
    SomeObject obj = new SomeObject ();
    obj.ID = dr.GetInt32OrDefault("objectID", 0); // 1 line instead of 4
    ...
    return obj;
 }

- , ORM. , IBatis , SQL. ORM .

0

Source: https://habr.com/ru/post/1721069/


All Articles