In this short blog post we will present how to implement WPF application with Master-detail relation in Entity Framework by using MVVM pattern. We will start with creating the new Visual Studio 2010 WPF Application project, and add reference to MVVM Light Toolkit library, which you can find on http://mvvmlight.codeplex.com/. The picture below shows the starting WPF project:
Now that we have starting project, we can add the new ADO.NET Entity Framework model with NorthWind SQL database. Map the only two tables Order and OrderDetails, after that we have the following situation. If you not familiar with this procedure, more details you can find on my previous post.
The next step in implementation will be creating the ModelView of the MainWindow. The ModelView will contain implementation of all logic of the Master-detail relation. To do that point with right-click on the project, select Add-Class of the context menu item and enter the name MainWindowViewModel. If you have full instatlation of the MVVM Light Toolkit you can use MVVM template specialized for creating ModelView class.
After we create file of the MainWindowViewModel, we have to implement class and add two properties MasterCollection, and DetailsCollection.
The Next source code listing shows implementation of the MainWindowViewModel. This is minimal code for work with master – details in Entity Framework.
using GalaSoft.MvvmLight; using System.Windows.Data; namespace WPF_EF_MasterDetailsDemo { public class MainWindowViewModel:ViewModelBase { NorthwindEntities ctx = new NorthwindEntities(); public MainWindowViewModel() { } private CollectionViewSource _entityMasterView; public CollectionViewSource EntityMasterView { get { if (_entityMasterView == null) GetMasterEntityCollection(); return _entityMasterView; } } public CollectionViewSource _entityDetailsView; public CollectionViewSource EntityDetailsView { get { if (_entityDetailsView == null) GetMasterEntityCollection(); return _entityDetailsView; } } private void GetMasterEntityCollection() { _entityDetailsView = new CollectionViewSource(); _entityMasterView = new CollectionViewSource(); _entityMasterView.Source = ctx.Orders; _entityMasterView.View.CurrentChanged += (x, y) => { _entityDetailsView.Source =((Orders)_entityMasterView.View.CurrentItem).Order_Details; }; _entityMasterView.View.Refresh(); } } }
After we implemented ViewModel, we have to put some GUI stuff on the MainWindow.xaml, so open the MainWindow.xaml, put two labels and two DataGrid controls in to Main Window. This looks line on the following picture:
The sample is so short that it can fit in to single image ;).
In the code-behind constructor create MainWindowViewModel and assign to Windows DataContext, and that’s it.
This post demonstrate one posible implementation of the Master-detail relation in EF by using the MVVM pattern. The source code of this project you can find on SkyDrive.
Pingback: Tweets that mention Master-details with Entity Framework in WPF by using MVVM pattern | Bahrudin Hrnjica Blog -- Topsy.com
Pingback: Entity Framework Master-detail relacija u WPF korištenjem MVVM tehnike - Blog o C++ i C#
I have been working on an MVVM approach using CollectionViewSource for quite some time. This worked great! Thank you!
Sir thank you so much. it helped me to understand better. can you please tell how to implement the same for Master-Detail-SubDetail scenario. I am currently working on it and I can achieve that using only EF drag and drop. But i would like to achieve it from code behind. kindly help. many thanks
Hi,
it is very simple.
This is another Master(Detail)-Detail(SubDetail).
Cheers
Thanks for your quick reply.
where can I find the post regarding Master(Detail)-Detail(SubDetail) in your blog?
thanks indeeed
Many thanks for this fine explanation of the really essential subjects (using EF in MVVM)! Much better and more clear than the other results which I found over Google!
In other words, if they have to create their own PHRs by inputting data
themselves, it. First, use the dropper to coat your tonsils with salt water.
Can you get tonsil stones if your tonsils have been extracted.
I’d like to find out more? I’d like to find out
some additional information.
I have read so many articles on the topic of the
blogger lovers however this paragraph is genuinely
a nice piece of writing, keep it up.
Ashley’s the opposite; she’s the Superiority (goal-environment) style, perhaps
even a small exaggerated. You will be able to use your iPhone
4 unlock the way you want and have accessibility to all
its features.
Besides the truth that their hair wasn’t the same size,
they looked the same.
You require a 3rd party software to do that. Type “http://repo666.ultrasn0w.com” and touch on”Add Supply” to consist of this repo if you haven’t currently. Some of you can’t pay for to have something like this happen.
What’s up, its goold aragraph about media print, we all be familiar with media is a enorfmous source of information.
The sounds produced do not sound synthetic at all and the
interface is also extremely easy to use. If there’s one pc manufacturer that’s renowned for its capability to produce good laptops, it’s
Toshiba.
This is also a provide you with that has been expanded.
If you are applying in a fresh iPhone 4 then you do not have any difficulties.
Occasionally you your investment code and secure the phone.
This was extremely helpful!! Best tutorial I have found. Simple and just what I needed.
My problem was that when the DataContext is set in the codebehind, the Bindings don’t autocomplete in Visual Studio 2010, However they work !! http://i.imgur.com/e8UTOJ3.png
Users are provided with 10GB Internet use each month with the handset cost at free.
For ordering and purchasing information see the Apple iPad website.
Editors are usually the ones insisting on DRM.
The more websites that you have your link, the more people you can get
to register for your fan page. You must be sharp enough to generate money
and protect your legal household. Produce your group/fan page exactly about you.
Pretty! This has been an incredibly wonderful post. Thank you for
supplying this info.
Wow, superb blog structure! How long hasve you been running a bloog
for? you made running a blog glance easy. The overall look of your
web site is magnificent, as neatly as thhe content material!
I’m not sure exacly why but this wweb site is loading very sloow for me.
Is anyone else having this problem or is it a problem on my end?
I’ll check back later and see if the problem still exists.
You can effortlessly discover it in iTunes Application Shop.
Now, click the blue arrow button on the bottom correct of the application. High tones of roasted, toasty malts emanate from the glass
as I attract it only inches from my nose.
You’ll need to be sure you’ve the best possible report picture!
Ultra Defrag is definitely an additional superb software for fragmentation and optimization. Make note with this
IP address too.
Thankfulness to my fatyher who informed me about this web site, this weblog is really
amazing.
yoou are actually a excellent webmaster. The website loading spded iss amazing.
It kjnd of feels that you are doing any unique trick.
Moreover, The contents are masterpiece. you have done a wonderful activity
on this topic!
Awesome blog! Do yyou have any recommendations for aspiring writers?
I’m hoping to start my own blog soon but I’m a little lost onn everything.
Would you suggest starting with a free platform like WordPress or go for a paid option? There are so many options out there that I’m
totgally confused .. Any ideas? Thanks a lot!
I am actually grateful to the holder of this website who has shared this
enormous article at at this time.
I am really thankful to the owner of this website who has shared this enormous article at here.