/// <summary> /// Нажатие на кнопку удаления элемента /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void BtDelete_Click(object sender, RoutedEventArgs e) { using (var gc = new GeometryContext()) { if (_activeShape.Type == ShapeInfo.ShapeType.Circle) { var item = new Circle {Id = _activeShape.Guid}; gc.Circles.Attach(item); gc.Circles.Remove(item); gc.SaveChanges(); } if (_activeShape.Type == ShapeInfo.ShapeType.Rectangle) { var item = new Models.GeometryShapes.Rectangle {Id = _activeShape.Guid}; gc.Rectangles.Attach(item); gc.Rectangles.Remove(item); gc.SaveChanges(); } } RefreshAll(); }
/// <summary> /// Заполняет базу данных демо даннными /// </summary> public static void Fill() { using (var gc = new GeometryContext()) { // очищаем старую базу данных foreach (var id in gc.Colors.Select(e => e.Id)) { var item = new Color {Id = id}; gc.Colors.Attach(item); gc.Colors.Remove(item); } gc.SaveChanges(); foreach (var id in gc.Positions.Select(e => e.Id)) { var item = new Position {Id = id}; gc.Positions.Attach(item); gc.Positions.Remove(item); } gc.SaveChanges(); foreach (var id in gc.Circles.Select(e => e.Id)) { var item = new Circle {Id = id}; gc.Circles.Attach(item); gc.Circles.Remove(item); } gc.SaveChanges(); foreach (var id in gc.Rectangles.Select(e => e.Id)) { var item = new Rectangle {Id = id}; gc.Rectangles.Attach(item); gc.Rectangles.Remove(item); } gc.SaveChanges(); // добавляем цвета var colorList = new List<Color> { new Color {Title = "Red"}, new Color {Title = "Green"}, new Color {Title = "Blue"} }; colorList.ForEach(item => gc.Colors.Add(item)); gc.SaveChanges(); // добавляем координаты var positionList = new List<Position> { new Position {CoordX = 200, CoordY = 100}, new Position {CoordX = 390, CoordY = 170}, new Position {CoordX = 230, CoordY = 380}, new Position {CoordX = 290, CoordY = 120}, new Position {CoordX = 170, CoordY = 130}, new Position {CoordX = 170, CoordY = 160}, new Position {CoordX = 140, CoordY = 100}, new Position {CoordX = 105, CoordY = 340}, new Position {CoordX = 200, CoordY = 450} }; positionList.ForEach(item => gc.Positions.Add(item)); gc.SaveChanges(); // добавляем круги var circleList = new List<Circle> { new Circle {Radius = 40, Color = colorList[0], Position = positionList[0]}, new Circle {Radius = 50, Color = colorList[1], Position = positionList[1]}, new Circle {Radius = 60, Color = colorList[2], Position = positionList[2]}, new Circle {Radius = 70, Color = colorList[0], Position = positionList[3]}, new Circle {Radius = 80, Color = colorList[1], Position = positionList[4]} }; circleList.ForEach(item => gc.Circles.Add(item)); gc.SaveChanges(); // добавляем прямоугольники var rectangleList = new List<Rectangle> { new Rectangle {Width = 40, Height = 70, Color = colorList[0], Position = positionList[5]}, new Rectangle {Width = 20, Height = 20, Color = colorList[1], Position = positionList[6]}, new Rectangle {Width = 30, Height = 30, Color = colorList[2], Position = positionList[7]}, new Rectangle {Width = 70, Height = 50, Color = colorList[0], Position = positionList[8]} }; rectangleList.ForEach(item => gc.Rectangles.Add(item)); gc.SaveChanges(); } }
/// <summary> /// Нажатие на кнопку ОК /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void ButtonOk_Click(object sender, RoutedEventArgs e) { using (var gc = new GeometryContext()) { // блок исключающий возникновение чрезвычайных ситуаций // например конвертация неподходящей строки в число try { // вначале удаляем старую запись, если такая имела место быть if (_guid.HasValue) { if (_shapeType == ShapeInfo.ShapeType.Circle) { var item = new Circle {Id = _guid.Value}; gc.Circles.Attach(item); gc.Circles.Remove(item); } if (_shapeType == ShapeInfo.ShapeType.Rectangle) { var item = new Rectangle {Id = _guid.Value}; gc.Rectangles.Attach(item); gc.Rectangles.Remove(item); } gc.SaveChanges(); } // затем создаем новую запись о координате Position position = new Position { CoordX = Convert.ToDouble(TextBoxCoordX.Text), CoordY = Convert.ToDouble(TextBoxCoordY.Text) }; gc.Positions.Add(position); gc.SaveChanges(); // определяем какой цвет выбран string colorName; switch (ColorList.SelectedIndex) { case 0: colorName = "Red"; break; case 1: colorName = "Green"; break; default: colorName = "Blue"; break; } var color = gc.Colors.First(x => x.Title == colorName); gc.SaveChanges(); // и создаем нужную фигуру if (_shapeType == ShapeInfo.ShapeType.Circle) { Circle circle = new Circle { Position = position, Radius = Convert.ToSingle(TextBox1.Text), Color = color }; gc.Circles.Add(circle); } else { Rectangle rec = new Rectangle { Position = position, Width = Convert.ToSingle(TextBox1.Text), Height = Convert.ToSingle(TextBox2.Text), Color = color }; gc.Rectangles.Add(rec); } gc.SaveChanges(); Close(); } catch (Exception) { } } }