public void Remove(DomainModels.DTO.EF.OrderMaster ref_OrderMaster)
        {
            using (var context = new DomainModels.DTO.EF.OnlineShopEntities())
            {
                try
                {
                    var itemToRemove = context.OrderMaster.SingleOrDefault(x => x.Id == ref_OrderMaster.Id);
                    if (itemToRemove != null)
                    {
                        // context.OrderMaster.Remove(itemToRemove);
                        context.usp_OrderMasterDetails_Delete(itemToRemove.Id);
                        context.SaveChanges();
                    }
                }

                catch (Exception)
                {
                    throw;
                }
                finally
                {
                    if (context != null)
                    {
                        context.Dispose();
                    }
                }
            }
        }
        public dynamic  SelectOrderDetailsGivenOrdeMasterId(DomainModels.DTO.EF.OrderMaster ref_OrderMaster)
        {
            using (var context = new DomainModels.DTO.EF.OnlineShopEntities())
            {
                try
                {
                    #region ADO.NET
                    //SqlConnection sqlConn = new SqlConnection(context.Database.Connection.ConnectionString);
                    //SqlCommand command = new SqlCommand("usp_GetOrderDetailsGivenOrderMasterId", sqlConn);
                    //command.CommandType = CommandType.StoredProcedure;
                    //command.Parameters.AddWithValue("@orderMasterId", ref_OrderMaster.Id);
                    //SqlDataAdapter sqlDA = new SqlDataAdapter(command);
                    //DataTable orderDetails = new DataTable();
                    //sqlDA.Fill(orderDetails);
                    //return orderDetails;
                    #endregion

                    var q = context.usp_GetOrderDetailsGivenOrderMasterId(ref_OrderMaster.Id).ToList();
                    return(q);
                }
                catch (Exception)
                {
                    throw;
                }
                finally
                {
                }
            }
        }
        public void UpdateOrderMasterDetails(DomainModels.DTO.EF.OrderMaster ref_OrderMaster, DataTable ref_OrderDetails)
        {
            using (var context = new DomainModels.DTO.EF.OnlineShopEntities())
            {
                try
                {
                    var itemToUpdate = context.OrderMaster.SingleOrDefault(x => x.Id == ref_OrderMaster.Id);
                    if (itemToUpdate != null)
                    {
                        #region [ADO]
                        //context.Entry(itemToUpdate).CurrentValues.SetValues(ref_OrderMaster);
                        //SqlConnection sqlconn = new SqlConnection(context.Database.Connection.ConnectionString);
                        //SqlCommand command = new SqlCommand("usp_OrderMasterDetails_Update", sqlconn);
                        //command.CommandType = CommandType.StoredProcedure;
                        //command.Parameters.AddWithValue("@idMaster", ref_OrderMaster.Id);
                        //command.Parameters.AddWithValue("@orderDate", ref_OrderMaster.OrderDate);
                        //command.Parameters.AddWithValue("@customer_Ref", ref_OrderMaster.Customer_Ref);
                        //command.Parameters.AddWithValue("@udt_orderDetailsListUpdate", ref_OrderDetails);
                        //sqlconn.Open();
                        //command.ExecuteNonQuery();
                        //context.SaveChanges();
                        //sqlconn.Close();
                        //context.SaveChanges();
                        #endregion

                        var orderDetails = new SqlParameter("@udt_orderDetailsListUpdate", SqlDbType.Structured);
                        orderDetails.Value    = ref_OrderDetails;
                        orderDetails.TypeName = "dbo.udt_OrderDetailsList_Update";

                        var idMaster = new SqlParameter("@idMaster", SqlDbType.Int);
                        idMaster.Value = ref_OrderMaster.Id;

                        var orderDate = new SqlParameter("@orderDate", SqlDbType.DateTime);
                        orderDate.Value = ref_OrderMaster.OrderDate;

                        var orderCode = new SqlParameter("@orderCode", SqlDbType.Int);
                        orderCode.Value = ref_OrderMaster.OrderCode;

                        var ref_Customer = new SqlParameter("@customer_Ref", SqlDbType.Int);
                        ref_Customer.Value = ref_OrderMaster.Customer_Ref;


                        context.Database.ExecuteSqlCommand("exec dbo.usp_OrderMasterDetails_Update @idMaster,@orderCode,@orderDate,@customer_Ref,@udt_orderDetailsListUpdate", idMaster, orderCode, orderDate, ref_Customer, orderDetails);
                        context.SaveChanges();
                    }
                }
                catch (Exception)
                {
                    throw;
                }
                finally
                {
                    if (context != null)
                    {
                        context.Dispose();
                    }
                }
            }
        }
        public void InsertOrderMasterDetails(DomainModels.DTO.EF.OrderMaster ref_OrderMaster, DataTable ref_OrderDetails)
        {
            using (var context = new DomainModels.DTO.EF.OnlineShopEntities())
            {
                try
                {
                    #region [ADO]
                    // // ref_OrderDetails.ForEach(x => orderDetails.Rows.Add(x));
                    // SqlConnection sqlconn = new SqlConnection(context.Database.Connection.ConnectionString);
                    // SqlCommand command = new SqlCommand("dbo.usp_OrderMasterDetails_Insert", sqlconn);
                    // command.CommandType = CommandType.StoredProcedure;
                    // command.Parameters.AddWithValue("@udt_orderDetailsList", ref_OrderDetails);
                    //// command.Parameters.AddWithValue("@idMaster",ref_OrderMaster.Id);
                    // command.Parameters.AddWithValue("@orderDate", ref_OrderMaster.OrderDate);
                    // command.Parameters.AddWithValue("@customer_Ref", ref_OrderMaster.Customer_Ref);

                    // sqlconn.Open();
                    // command.ExecuteNonQuery();
                    // context.SaveChanges();
                    // sqlconn.Close();
                    // context.SaveChanges();
                    #endregion

                    var orderDetails = new SqlParameter("@udt_orderDetailsList", SqlDbType.Structured);
                    orderDetails.Value    = ref_OrderDetails;
                    orderDetails.TypeName = "dbo.udt_OrderDetailsList";

                    var orderDate = new SqlParameter("@orderDate", SqlDbType.DateTime);
                    orderDate.Value = ref_OrderMaster.OrderDate;

                    var orderCode = new SqlParameter("@orderCode", SqlDbType.Int);
                    orderCode.Value = ref_OrderMaster.OrderCode;

                    var ref_Customer = new SqlParameter("@customer_Ref", SqlDbType.Int);
                    ref_Customer.Value = ref_OrderMaster.Customer_Ref;


                    context.Database.ExecuteSqlCommand("exec dbo.usp_OrderMasterDetails_Insert @orderCode,@udt_orderDetailsList,@orderDate,@customer_Ref",
                                                       orderCode, orderDetails, orderDate, ref_Customer);
                    context.SaveChanges();
                }
                catch (Exception)
                {
                    throw;
                }
                finally
                {
                    if (context != null)
                    {
                        context.Dispose();
                    }
                }
            }
        }