0

I have a C# code and when i need to add Medium data to Tuition.But When i try to add Medium data to Tuition i'm getting error Object Reference not to instance of an objcet.

public List<Tuition> GetAllTuitionBasicDetails()
    {
        List<Tuition> _tuitions = new List<Tuition>();
        try
        {
            con.Open();

            string query = @"SELECT T.TuitionId,T.TuitionTitle,T.DisplayName FROM [dbo].[TBL_T_Tuition] T";
            cmd = db.GetSqlStringCommand(query);
            var ds = db.ExecuteDataSet(cmd);

            if (ds.Tables[0].Rows.Count > 0)
            {
                foreach (DataRow row in ds.Tables[0].Rows)
                {
                    Tuition _tuition = new Tuition();
                    _tuition.TuitionId = Convert.ToInt32(row["TuitionId"]);
                    _tuition.TuitionTitle = (row["TuitionTitle"].ToString());
                    _tuition.DisplayName = (row["DisplayName"].ToString());

                    //Medium data - This comes ENGLISH or FRENCH medium data

                    string queryMedium = @"SELECT TM.MediumId,M.MediumName 
                                        FROM [dbo].[TBL_T_TuitionMedium] TM 
                                        INNER JOIN [dbo].[TBL_M_Medium] M
                                        ON TM.MediumId =M.MediumId
                                        Where TM.IsActive = 1 AND M.IsActive=1 AND TM.TuitionId= " + _tuition.TuitionId;
                    cxd = db.GetSqlStringCommand(queryMedium);
                    var dx = db.ExecuteDataSet(cxd);

                    foreach (DataRow r in dx.Tables[0].Rows)
                    {
                        Medium _medium = new Medium();
                        _medium.MediumId = Convert.ToInt32(r["MediumId"]);
                        _medium.MediumName = (r["MediumName"].ToString());

                        _tuition.Mediums.Add(_medium); // In here im getting error "Object Reference not to instance of an objcet error."
                    }

                     _tuitions.Add(_tuition);

                }
            }
        }
        catch (Exception ex)
        {

            throw ex;
        }


        return _tuitions;
    }
}

My DTO Structure is below

 public class Tuition
{
 //Some Properties here
public List<Medium> Mediums { get; set; }
}

 public class Medium
{
    public int MediumId { get; set; }
    public string MediumName { get; set; }

    //Some Properties here
}
Llama
  • 25,925
  • 5
  • 49
  • 68
TechGuy
  • 3,559
  • 12
  • 46
  • 71
  • You're not initializing `Mediums` so it's `null`. – Llama Jan 23 '20 at 07:01
  • @john Mediums is inside Tuition class know ? – TechGuy Jan 23 '20 at 07:03
  • Yes, it is. What's your point? – Llama Jan 23 '20 at 07:03
  • @John So then it's already initialized know? or if 'm wrong please help me to solve this. – TechGuy Jan 23 '20 at 07:05
  • `_tuition.Mediums = new List();` Reference types (which `List` is) are `null` by default. If .NET initialized all members when you created a class, what would happen if you had `public class A { public A Value {get;set;} }`? Your program would crash. This is why it doesn't. – Llama Jan 23 '20 at 07:06

0 Answers0