dir.by  
  Search  
Programming, development, testing
WPF. Windows Presentation Foundation (отдельное приложение exe файл)
Entity Framework в приложении WPF. Используем Code First (пишем c# код, а таблицы в базе данных создаются сами)
  Looked at 15854 times    
 Entity Framework в приложении WPF (Code First) 
last updated: 21 June 2018
Entity Framework предоставляет возможность работы с Базой данных через C# код.
Рассмотрим подход Code First (пишем C# код, а таблицы в Базе данных создаются автоматически по C# коду).
План (7 шагов)
Шаг 1. Создаем новый WPF проект
Шаг 2. Добавляем библиотеку Entity Framework используя NuGet
Нажимаем в меню: ToolsNuGet Package ManagerManage NuGet Packages for Solution...
Нажимаем кнопку "Install"
Let's look at что подключилось >> ...
Шаг 3. Установка Microsoft SQL Server (для хранения базы данных)
Мы будем использовать Microsoft SQL Server для хранения базы данных.
Если у Вас не установлена нужно установить Microsoft SQL Server 2012... (или другую версию)
Шаг 4. Создаем соединиение с Базой данных Microsoft SQL Server в файле App.config
Добавляем соединение <connectionStrings>...</connectionStrings> к Базе данных в файле App.config
Новые добавленные строчки помеченные синим
  Файл: App.config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
     <configSections>
          <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
          <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
     </configSections>

     <startup>
          <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
     </startup>
    
     <connectionStrings>
          <add name="MyConnection1" connectionString="Data Source=EVGENI\MSSQLSERVER2012;Initial Catalog=MyDatabase1;Integrated Security=True;" providerName="System.Data.SqlClient" />
     </connectionStrings>


     <entityFramework>
          <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
          <providers>
               <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
          </providers>
     </entityFramework>
</configuration>
На заметку!
Initial Catalog=MyDatabase1 это название базы данных. Если такое название не существует то новая база данных будет создана.
name="MyConnection1" пишем любой текст это имя соединения. Это имя соединения будем использовать в C# классах.
Data Source=EVGENIMSSQLSERVER2012 это имя сервера базы данных (SQL Server name). Сервер базы данных может находится локально или на другом компьютере. Имя сервера базы данных появляется при открытии SQL Server Management Studio (на картинке нарисовано).
Шаг 5. Добавим класс Book и класс UserContext для работы с Базой данных
Для подключения к базе данных через Entity Framework, нам нужен посредник - контекст данных.
Контекст данных представляет собой класс, производный от класса DbContext.
Контекст данных содержит одно или несколько свойств типа DbSet, где T представляет тип объекта, хранящегося в базе данных

Класс UserContext это наш контекст данных
Наш контекст данныхсоздаст базу данных MyDatabase1 (если ее не существует)
Класс Book создаст таблицу Books и заполнит данными.

Новые добавленные строчки помеченные синим
  C#  
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

using System.Data.Entity;

namespace WpfApplication10
{
     public class Book
     {
          public int Id { get; set; }
          public string Name { get; set; }
          public int Price { get; set; }
     }

     class UserContext : DbContext
     {
          public UserContext() : base("MyConnection1")
          { }

          public DbSet<Book> Books { get; set; }
     }


     /// <summary>
     /// Interaction logic for MainWindow.xaml
     /// </summary>
     public partial class MainWindow : Window
     {
          public MainWindow()
          {
               InitializeComponent();

               // add data
               using (UserContext db = new UserContext())
               {
                    // создаем объекты Book
                    Book book1 = new Book { Name = "Граф Монтекристо", Price = 123 };
                    Book book2 = new Book { Name = "Властелин колец", Price = 267 };
                    Book book3 = new Book { Name = "Три кота", Price = 125 };

                    // добавляем объекты Book в контекст данных
                    db.Books.Add(book1);
                    db.Books.Add(book2);
                    db.Books.Add(book3);

                    // сохраняем контекст данных в базу данных
                    db.SaveChanges();
               }

          }
     }
}
Шаг 6. Запускаем WPF приложение
Нажимаем вверху на зеленый треугольник
Приложение запустилось
 
После запуска приложения, выполнится C# код который:
• создаст Базу данных "MyDatabase1" (если такой нет)
• создаст таблицу Books (если такой нет)
• добавит значения в таблицу Books
        Name="Граф Монтекристо" Price=123
        Name="Властелин колец"     Price=267
        Name="Три кота"                   Price=125
Шаг 7. Проверяем как создалась наша База данных и таблица в Microsoft SQL Server
Note! You must have Microsoft SQL Server installed. If you don't have it, then need to download and install Microsoft SQL Server ...

Note! You must have SQL Server Management Studio installed. If you don't have it, then need to download and install SQL Server Management Studio ...

To open SQL Server Management Studio, we click on the icon on the desktop:
 
A window will appear and press the "Connect" button:
 
 
After 20 seconds, we will see that SQL Server Management Studio is loaded:
 Смотрим значения в таблице в SQL Server Management Studio 
Шаг 1. Открываем SQL Server Management Studio
Note! You must have Microsoft SQL Server installed. If you don't have it, then need to download and install Microsoft SQL Server ...

Note! You must have SQL Server Management Studio installed. If you don't have it, then need to download and install SQL Server Management Studio ...

To open SQL Server Management Studio, we click on the icon on the desktop:
 
A window will appear and press the "Connect" button:
 
 
After 20 seconds, we will see that SQL Server Management Studio is loaded:
Шаг 2. Смотрим значения в таблице
Раскрываем базу данных MyDatabase1
 
Нажимаем правой клавишей мыши на таблице dbo.Books и нажимаем Select Top 1000 Rows
 
Смотрим на значения:
Видим, что автоматически:
• создалась новая база данных MyDatabase1 (если такой не было)
• создалась новая таблица Books (если такой не было)
• в таблице Books добавились значения
Таблица Books
Id
Name
Price
1
Граф Монтекристо
123
2
Властелин колец
267
3
Три кота
125
На заметку!
Если запустим программу второй раз, то увидим что в таблице Books уже 6 строчек.
Если запустим программу третий раз, то увидим что в таблице Books 9 строчек.
Если запустим программу четвертый раз, то увидим что в таблице Books 12 строчек.
То есть если таблица Books существет, то при каждом запуске программы добавляются 3 строчки.
 
← Previous topic
Пример "Устанавливаем ширину элемента в процентах от ширины родительского элемента" (width in percentage), пишем свой IValueConverter | C# WPF приложение
 
Next topic →
Example "Create your own WPF element using Style and a new xaml file. The new element is: at the top Title, at the bottom the text in the frame. Using Binding | C# WPF application
 
Your feedback ... Comments ...
   
Your Name
Your comment (www links can only be added by a logged-in user)

  Объявления  
  Объявления  
 
WPF простое новое приложение
Создаем новое WPF приложение | C#
WPF layout
Делаем layout с DockPanel и StackPanel в WPF
События
Пример "Получаем координаты мыши при нажатии левой клавишей мыши на TextBlock"| координаты экрана и относительные координаты | C# WPF приложение
Пример "Получаем координаты мыши при нажатии левой клавишей мыши на Button"| координаты экрана и относительные координаты | C# WPF приложение
Пример "Получаем координаты мыши при нажатии левой клавишей мыши на Grid и рисуем линию"| C# WPF приложение
Пример "При двойном нажатии левой клавишей мыши на Grid показываем сообщение"| C# WPF приложение
WPF элементы
Label
Пример "Устанавливаем текст в Label" через c# код | WPF приложение
иконки FontAwesome
Пример "Показываю иконки, для иконки подключаю библиотеку fontawesome5" | C# WPF приложение
Example "I make animations for icons, library fontawesome5" | C# WPF application
 
TextBlock
Пример "Устанавливаем текст в TextBlock используя Binding". Еще добавим двойной Bindning используя INotifyPropertyChanged | C# WPF приложение
Пример "Несколько TextBlock (показываем тексты) и делаем так чтобы при mouse move выделялся элемент где мышка (mouse over)" | C# WPF приложение
Пример "Получаем координаты мыши при нажатии левой клавишей мыши на TextBlock"| координаты экрана и относительные координаты | C# WPF приложение
Button
Пример "Получаем координаты мыши при нажатии левой клавишей мыши на Button"| координаты экрана и относительные координаты | C# WPF приложение
TextBox
Пример "Устанавливаем и получаем текст в TextBox используя Binding" | C# WPF приложение
Пример "Устанавливаем текст в TextBox" через c# код | WPF приложение
 
TextBox с Place Holder
Пример "Показываем Place Holder в TextBox" | WPF приложение
Пример "Показываем Place Holder с иконкой в TextBox", для иконки подключаю библиотеку fontawesome5 | WPF приложение
 
TextBox с проверкой текста (валидация)
Пример "Устанавливаем текст в TextBox используя Binding и делаем валидацию (если текст не правильный)" | C# WPF приложение
 
ComboBox
Пример "В ComboBox делаем редактирование текста. Получаем текст используя Binding" | C# WPF приложение
 
ItemsControl
Пример "ItemsControl, кнопка и обработчик нажатия" | WPF приложение
Grid
Что такое Grid в WPF
Как добавить RowDefinition, ColumnDefinition в Grid (мышкой в XAML design editor) | C# WPF приложение
В Grid добавляем vertical scrolling | WPF приложение
DataGrid
Пример "DataGrid делаем bind данных", кнопка и обработчик нажатия в DataGrid, выравнивание текста в DataGrid, scrolling | WPF приложение
Как сделать scrolling для DataGrid ? | C# WPF приложение
Scrolling для DataGrid (чтобы скролинг работал когда мы крутим колесо мышки и мышка находится вне scroll bar) | C# WPF приложение
Как выделить row цветом при нажатии на row мышкой (change background for selected row) в DataGrid ? | C# WPF приложение
Как row DataGrid выделить цветом (сделать background) ? | C# WPF приложение
Пример "DataGrid делаем сортировку колонки по своему алгоритму (Custom Sort)" | WPF приложение
DataGrid внутри DataGrid
Пример портфолио сотрудников с описанием задач: "DataGrid внутри DataGrid используя RowDetailsTemplate" | WPF приложение
 
ListView
Пример "В ListView расширяем колонку при добавлении данных (auto column width)" | WPF приложение
Пример "В ListView используем ItemTemplate DataTemplate" | WPF приложение
 
ScrollViewer
В Grid добавляем vertical scrolling | WPF приложение
Как сделать scrolling для DataGrid ? | C# WPF приложение
Scrolling для DataGrid (чтобы скролинг работал когда мы крутим колесо мышки и мышка находится вне scroll bar) | C# WPF приложение
Example "Do ScrollBar less(more) in ScrollViewer" | C# WPF application
Resource файл
Добавляем картинку (jpg, bmp, png) в проект и помечаем как Resource | C# WPF приложение
Image
В элементе Image показываем картинку (jpg, bmp, png) из Resource | C# WPF приложение
Выбираем картинку (jpg, bmp, png) из компьютера и показываем в элементе Image. Сохраняем картинку в базу данных | C# WPF приложение
Пример "В Image элементе делаем Binding для Source" | C# WPF приложение
Пример "Конвертируем текст base64 в картинку Bitmap и показываем в Image элементе" | C# WPF приложение
Пример "Открываем SVG файл и показываем картинку в Image элементе" | C# WPF приложение
 
Canvas
Пример "Создаем Canvas и рисуем картинку" C# WPF
Пример "Рисуем картинку с движением на Canvas" C# WPF
Пример "Рисуем картинку с движением и анимацией sprite на Canvas" C# WPF
 
Line
Рисуем Line (сплошная и штриховая линии) | C# WPF приложение
Пример "Создаем и рисуем линию при нажатии левой клавишей мыши на Grid"| Grid Line | C# WPF приложение
Конвертируем картинку в XAML Path Geometry
Конвертируем SVG в XAML(используя Adobe Illustrator), заполняем Path Data Geometry, показываем линии на экране | C# WPF приложение
Конвертируем SVG в XAML(используя Dias SVG to UWP XAML Converter), заполняем Path Data Geometry, показываем линии на экране | C# WPF приложение
Конвертируем PNG в SVG в XAML | C# WPF приложение
Converter SVG to XAML | WPF C#
Конвертируем XAML в SVG | C# WPF приложение
ViewBox
Пример "ViewBox делаем Binding для Left, Top, Width, Height, ContetnPresenter binding" | C# WPF приложение
Width by percentage
Разделить экран по вертикали (по ширине) на 2 равные части экран (width1 = 50%, width2 = 50%), используем Grid | C# WPF приложение
Разделить экран по вертикали (по ширине) на 2 части (width1 = 70%, width2 = 30%), используем Grid | C# WPF приложение
Пример "Устанавливаем ширину элемента в процентах от ширины родительского элемента" (width in percentage), пишем свой IValueConverter | C# WPF приложение
База данных (Entity Framework)
Entity Framework в приложении WPF. Используем Code First (пишем c# код, а таблицы в базе данных создаются сами)
Создаем свои WPF элементы
Example "Create your own WPF element using Style and a new xaml file. The new element is: at the top Title, at the bottom the text in the frame. Using Binding | C# WPF application
Пример "Создаем свой новый WPF элемент со своими свойсвами в новом cs и xaml файлах. В WPF новом элементе: вверху Title, снизу текст и в рамке | C# WPF приложение
WPF приложение с библиотекой Prism (MVVM шаблон проектирования)
Создаем новое WPF приложение с Prism Unity (разделение проекта на папки Services, Views, ViewModels). Патерн MVVM (Model-View-ViewModel) | C#
WPF приложение с Prism Unity. В приложении Tab и разделения на отдельные xaml используя Region.
WPF приложение с Locator (MVVM шаблон проектирования)
Создаем новое WPF приложение с Locator (разделение проекта на папки Views, ViewModels)
Как добавить Dependency Injection, загрузку из appsettings.json в новом WPF приложении ?
Автоматические тесты
Пишем автоматический тест для WPF C# приложения (используем Nuget.Appium и свойство AutomationProperties.AutomationId)
Вопросы на собеседованиях
В чем отличие static resource от dynamic resource ? | WPF C#
Дополнительные темы, вопросы
Открываем окно свойств (properties) для графического элемента в WPF приложении C#
Ошибки
Error "To run this application, you must install .NET. Would you like to download it now?" | I run WPF the application on C#
Книги
Книги для изучения WPF

  Ваши вопросы присылайте по почте: info@dir.by  
Яндекс.Метрика