9. xaml & wpf - wpf and databases

28
Doncho Minkov Telerik Software Academy academy.telerik.com Technical Trainer http://www.minkov.it http://academy.telerik.com/ WPF and Databases LINQ-to-Entities, Data Persisters, Master Datail

Upload: telerik-software-academy

Post on 12-Jun-2015

1.792 views

Category:

Technology


12 download

DESCRIPTION

WPF and Databases Telerik Software Academy: http://academy.telerik.com/school-academy/meetings/details/2012/02/02/desktop-applications-csharp-wpf The website and all video materials are in Bulgarian. Data Access Layer Linq-to-Entities Linq-to-XML Accessing the Data Layer DataContext Master Detail Data Persister Paging WPF and Databases

TRANSCRIPT

Page 1: 9. XAML & WPF - WPF and Databases

Doncho Minkov

Telerik Software Academyacademy.telerik.com

Technical Trainerhttp://www.minkov.it

http://academy.telerik.com/

WPF and DatabasesLINQ-to-Entities, Data Persisters, Master Datail

Page 2: 9. XAML & WPF - WPF and Databases

Table of Contents Data Access Layer

Linq-to-Entities Linq-to-XML

Accessing the Data Layer DataContext

Master Detail Data Persister Paging WPF and Databases

Page 3: 9. XAML & WPF - WPF and Databases

Data Access Layer

Page 4: 9. XAML & WPF - WPF and Databases

Data Access Layer The Data Access Layer is a essential Used for access to the database

Class Library with single EntityModel class

This way we can use the same DAL with many applications

Page 5: 9. XAML & WPF - WPF and Databases

Data Access LayerLive Demo

Page 6: 9. XAML & WPF - WPF and Databases

Accessing the Data Layer

Page 7: 9. XAML & WPF - WPF and Databases

The DataContext When adding a reference to the DAL

project We can instantiate an entity model

in the XAML

And set it for DataContext<Window … xmlns:datalayer=" clr-namespace:NorthwindDataLayer;assembly= NorthwindDataLayer"> <Window.DataContext> <datalayer:NorthwindEntities /> </Window.DataContext>

Page 8: 9. XAML & WPF - WPF and Databases

Accessing DAL After instantiating the EntityModel

we can simply bind some of the entities to a ItemCollection ListBox, ListView, TreeView, etc.

In MVVM it is not possible to access the DAL directly Done through the ViewModel

In MVVM we need a DataPersister object

<TreeView x:Name="TreeViewCategories" ItemsSource="{Binding Categories}">

Page 9: 9. XAML & WPF - WPF and Databases

Accessing the Data LayerLive Demo

Page 10: 9. XAML & WPF - WPF and Databases

Master Detail

Page 11: 9. XAML & WPF - WPF and Databases

Master Detail

What is Master Detail? When selecting a Category

Show category info

Show products in this category<ListView Name="ListViewFamilies" ItemsSource="{Binding}" DisplayMemberPath="FamilyName"/><ListView DisplayMemberPath="Name" ItemsSource="{Binding ElementName=ListViewFamilies, Path=SelectedItem}"/>

Page 12: 9. XAML & WPF - WPF and Databases

Master Datail in MVVM Consider we have the property Categories in the ViewModel Somehow it gets data from the

Model

Since Categories is a IEnumerable we can get its ICollectionView

Now we got the CurrentItem

Can make property Products that returns the products of the CurrentItem

Page 13: 9. XAML & WPF - WPF and Databases

Master DetailLive Demo

Page 14: 9. XAML & WPF - WPF and Databases

Data PersisterThe way to collect information

Page 15: 9. XAML & WPF - WPF and Databases

What is a Data Persister?

The Data Persister is the object that gives data to the Model Sometimes it is merged with the

Model

It could be an EntityDataModel

It could be a Linq-to-XML object

It could just an object we created

How the Data Persister helps? Easier for mocking (unit testing)

Better reusability

Page 16: 9. XAML & WPF - WPF and Databases

The DataPersister The DataPersister is the class that makes the connection with the Data (RDB, XML or object) Responsible for the CRUD

May have validation

With this object the Model is pretty clean Almost no programming logic

Loose coupling

Page 17: 9. XAML & WPF - WPF and Databases

Data PersisterLive Demo

Page 18: 9. XAML & WPF - WPF and Databases

PagingWhat is paging and why we need it?

Page 19: 9. XAML & WPF - WPF and Databases

What is Paging? A memory-management scheme

A computer can store and retrieve data from secondary storage for use in main memory

With paging the application retrieves data from secondary storage in same-size blocks called pages

Why use paging? Imagine a Database with over a

million records

Store them in the dynamic memory at once? Or take them by pieces with 100

records?

Page 20: 9. XAML & WPF - WPF and Databases

Paging TODO

Page 21: 9. XAML & WPF - WPF and Databases

PagingLive Demo

Page 22: 9. XAML & WPF - WPF and Databases

WPF and DatabasesWith MVVM

Page 23: 9. XAML & WPF - WPF and Databases

WPF and Databases Consider the usual case

You have categories with products in a Database

CRUD operations should be implemented

You have the following:

When selecting the DataContext of the Grid You get a Person object

<Grid DataContext="{Binding Person}"> <TextBox Text="{Binding Name}"/> <TextBox Text="{Binding Age}"/></Grid>

Page 24: 9. XAML & WPF - WPF and Databases

Categories EditorLive Demo

Page 25: 9. XAML & WPF - WPF and Databases

форум програмиране, форум уеб дизайнкурсове и уроци по програмиране, уеб дизайн – безплатно

програмиране за деца – безплатни курсове и уроцибезплатен SEO курс - оптимизация за търсачки

уроци по уеб дизайн, HTML, CSS, JavaScript, Photoshop

уроци по програмиране и уеб дизайн за ученициASP.NET MVC курс – HTML, SQL, C#, .NET, ASP.NET MVC

безплатен курс "Разработка на софтуер в cloud среда"

BG Coder - онлайн състезателна система - online judge

курсове и уроци по програмиране, книги – безплатно от Наков

безплатен курс "Качествен програмен код"

алго академия – състезателно програмиране, състезания

ASP.NET курс - уеб програмиране, бази данни, C#, .NET, ASP.NETкурсове и уроци по програмиране – Телерик академия

курс мобилни приложения с iPhone, Android, WP7, PhoneGap

free C# book, безплатна книга C#, книга Java, книга C#Дончо Минков - сайт за програмиранеНиколай Костов - блог за програмиранеC# курс, програмиране, безплатно

?

? ? ??

?? ?

?

?

?

??

?

?

? ?

Questions?

?http://academy.telerik.com

WPF and Databases

Page 26: 9. XAML & WPF - WPF and Databases

Exercises1. Create a database holding continents,

countries and town. Countries have name, language, population and continent. Towns have name, population and country. Implement a WPF application that shows the continents in a ComboBox, countries in a ListView and the towns in a ListView and allows master-detail navigation. Use Entity Framework. Use paging and sorting for the long lists.

2. Implement add / edit / delete for the continents, countries, towns and languages. Handle the possible errors accordingly. Implement validation logic.

26

Page 27: 9. XAML & WPF - WPF and Databases

Exercises (2)

3. Add a flag for each country which should be a PNG image, stored in the database, displayed along with the country data. Implement "change flag" functionality by uploading a PNG image.

27

Page 28: 9. XAML & WPF - WPF and Databases

Free Trainings @ Telerik Academy

Desktop Applications with C# and WPF academy.telerik.com/

Telerik Software Academy academy.telerik.com

Telerik Academy @ Facebook facebook.com/TelerikAcademy

Telerik Software Academy Forums forums.academy.telerik.com