示例#1
0
        public AddressForm()
        {
            ctx = new CompanyModelContainer();

            // Components
            InitializeComponent();
            textBox1.Enabled = false;
            textBox2.Enabled = false;
            textBox3.Enabled = false;
            textBox4.Enabled = false;
            textBox5.Enabled = false;
            textBox6.Enabled = false;

            dataGridView1.DataSource = ctx.Addresses.ToList();
            dataGridView2.DataSource = ctx.V_CityCount.ToList();
        }
示例#2
0
        private void execute(int from)
        {
            int retCode = 0;

            try
            {
                switch (operation)
                {
                // Add new
                case 1:
                    // From code
                    if (from == 1)
                    {
                        var adr = new Address
                        {
                            Street  = textBox2.Text,
                            Number  = Convert.ToInt16(textBox3.Text),
                            Code    = textBox4.Text,
                            City    = textBox5.Text,
                            Country = textBox6.Text
                        };

                        var q3 = from st in ctx.Addresses select st;

                        foreach (var s in q3)
                        {
                            if (s.Street == adr.Street)
                            {
                                if (s.Number == adr.Number)
                                {
                                    if (s.Code == adr.Code)
                                    {
                                        if (s.City == adr.City)
                                        {
                                            if (s.Country == adr.Country)
                                            {
                                                throw new Exception("Istneje już taki adres");
                                            }
                                        }
                                    }
                                }
                            }
                        }

                        ctx.Addresses.Add(adr);
                    }
                    // From procedure
                    else
                    {
                        retCode = ctx.InsertAddress(textBox2.Text, Convert.ToInt16(textBox3.Text), textBox4.Text, textBox5.Text, textBox6.Text);
                    }

                    break;

                // Remove
                case 2:
                    if (from == 1)
                    {
                        var adrList = ctx.Addresses.ToList();
                        ctx.Addresses.Remove(adrList.Where(s => s.ID == Convert.ToInt16(textBox1.Text)).FirstOrDefault <Address>());
                    }
                    else
                    {
                        retCode = ctx.DeleteAddress(Convert.ToInt16(textBox1.Text));
                    }
                    break;

                // Update
                case 3:

                    if (from == 1)
                    {
                        var adrList = ctx.Addresses.ToList();

                        var address = adrList.Where(s => s.ID == Convert.ToInt16(textBox1.Text)).FirstOrDefault <Address>();
                        address.Street  = textBox2.Text;
                        address.Number  = Convert.ToInt16(textBox3.Text);
                        address.Code    = textBox4.Text;
                        address.City    = textBox5.Text;
                        address.Country = textBox6.Text;
                    }
                    else
                    {
                        // Obsluga wspolbieznosci optymistycznej
                        var adrList = ctx.Addresses.ToList();
                        var address = adrList.Where(s => s.ID == Convert.ToInt16(textBox1.Text)).FirstOrDefault <Address>();

                        try
                        {
                            ctx.Entry(address).State = EntityState.Modified;
                            retCode = ctx.UpdateAddress(Convert.ToInt16(textBox1.Text), textBox2.Text, Convert.ToInt16(textBox3.Text), textBox4.Text, textBox5.Text, textBox6.Text);

                            ctx.SaveChanges();
                            Console.WriteLine("Aktualizacja adresu");
                        }
                        catch (DbUpdateConcurrencyException ex)
                        {
                            Console.WriteLine("Aktualizacja adresu nie powiodla sie: Optimistic Concurrency exception");
                        }
                    }

                    break;
                }

                clear();

                ctx.SaveChanges();

                if (from == 2)
                {
                    ctx = new CompanyModelContainer();
                    MessageBox.Show("Zwrocony przez procedure kod: " + retCode, "Zwrocony kod");
                }



                dataGridView1.DataSource = ctx.Addresses.ToList();
                dataGridView2.DataSource = ctx.V_CityCount.ToList();
            }
            catch (DbEntityValidationException ex)
            {
                var errorMessages = ex.EntityValidationErrors
                                    .SelectMany(x => x.ValidationErrors)
                                    .Select(x => x.ErrorMessage);
                // Join the list to a single string.

                var fullErrorMessage = string.Join("; ", errorMessages);

                MessageBox.Show(fullErrorMessage);
            }
            //System.Data.SqlClient.SqlException
            catch (System.Data.Entity.Core.EntityCommandExecutionException ex)
            {
                if (ex.InnerException == null)
                {
                    MessageBox.Show("Blad.", "Nieprawidlowe dane adresu!");
                }
                else
                {
                    MessageBox.Show(ex.InnerException.Message);
                }
            }
            catch (Exception ex)
            {
                //MessageBox.Show(ex.GetType().ToString());
                if (ex.InnerException == null)
                {
                    MessageBox.Show("Blad.", "Nieprawidlowe dane adresu!");
                }
                else
                {
                    MessageBox.Show(ex.InnerException.InnerException.Message);
                }
            }
        }