Collections for WPF and NHibernate
My current programming project is on the Microsoft .NET platform, and I'm writing code in the C# language. I'm using NHibernate — a popular object/relational mapping tool — in the data access layer, and Windows Presentation Foundation (WPF) for the user interface. One of the features making WPF so attractive is data binding. Although I was initially disappointed when I found out that NHibernate's collections don't work correctly out-of-the-box with WPF data binding, I soon found Gary DeReese's blog entry which provides a (partial) solution. Gary's "NotifyingCollectionDemo
" shows how a custom collection type can be built to rectify NHibernate's shortcoming. After studying how his ObservableList
(which is actually an observable bag) was created relative to the NHibernate API, I began work on my own "ObservableCollections
" project which includes three custom collection types: observable bag, observable list, and observable set.
I've finished creating these custom collection types, so you can download the result now (updated 2008-Dec-10) to use in your own projects. The zip archive contains a Visual Studio 2005 solution that includes three projects. The "ObservableCollections
" project is the library containing the custom collections. The "ObservableCollections
Demo" project is a WPF program that you can run to play with the contents of a sample set and sample list collection. And the "CoreHelpers
" project contains some miscellaneous helper classes that I use in various projects. Before running the demo project, however, you'll need to do the following:
- Add references to the library and demo projects, pointing to the following NHibernate assemblies on your computer (unless already in the GAC): NHibernate, Castle.DynamicProxy, Iesi.Collections, and log4net.
- Change the absolute path of the database in the hibernate.cfg.xml file to match its location on your computer.
CoreHelpers
" project includes a OneToManyAssocSync
helper class that makes it easy to maintain in-memory the semantics of a one-to-many bidirectional association. The demo project shows how to use it. There is also a ManyToManyAssocSync
class for easily maintaining many-to-many bidirectional associations. (See this blog entry for a note about the renaming of these classes from their former names.)
Post Comment
MZwZRk we like to honor numerous other web web-sites on the web, even if they aren
o8Xr39 Im thankful for the post.Really thank you! Really Great.
rsjhnD Major thanks for the article post. Want more.
tVkaJC I loved your blog post.Much thanks again. Keep writing.
Tom, I like how you put that in words, thank you, very mesruaed. Indeed, interesting times ahead, but important to keep in mind that everything will keep on working for some time in future. Lot of people get into the panic mode with these announcements, but truth is things change, we just don't use Clipper to write DB apps anymore, but they continue on running, which is what matters.
Is that relaly all there is to it because that'd be flabbergasting.
you definitely love for less for more