Archive for the ‘Uncategorized’ Category
Exams Results
Just found out I got a 1st for my degree as well as the Sulivan Award for best project for the year!
Subsonic like NHibernate Query Generator button in Visual Studio
One thing I love about SubSonic, in fact the reason i switched, was how awsome the querying is. I don’t know why but something like new UserCollection().Where(”UserID”, id).Where(”Password”, password) just does it for me. Going from that back to either HQL or ICriterion was a rather painful experience. A very clever guy called Oren, has come up with a solution to this called NHibernate Query Generator (NQG). You can do some rather nifty things like FindOne(WHERE.User.Name == “James” && WHERE.User.Password == “NotGoingToTellYou”). Many (including Oren) belive that you shouldnt have strings in your code and thus the code to create all these cool queries is autogenerated.
The problem I found was I had to constantly change back & forth between the command line & VS to update the code. To solve this i borrowed a trick from SubSonic. I have created a little button in VS (see below) which will run the query complier for you.

To do this, firstly download the latest version of NQG, then copy the exe file NHQG.exe to an safe location e.g. “c:\Program Files\NHibernate\”. Next you need to open up visual studio, and click Tools -> External Tools and then click add. Give whatever name you want e.g. NHibernate, and then for the command the location of NHQG.exe, in my case “c:\Program Files\NHibernate\NHQG.exe”. In the arguments field, you have a few choices:
- /Lang: language used, either cs | vb
- /InputFilePattern: location of either Nhibernate mapping file or the dll (if your using Castle Projects ActiveRecord)
- /OutputDirectory: Directory you want the files to go to e.g. ./Models/Queries
- /BaseNamespace: Base namspace for queries, e.g. Priority.Queries
so a complete example would look like “/Lang:cs /InputFilePattern:bin/Priority.dll /OutputDirectory:Models/Queries /BaseNamespace:Priority.Queries”
For Inital directory you just add $(ProjectDir) which sets the starting location to be the root of the project directory. Finally, make sure that it is the first in the menu (it will become clear why in a second).

Once you click ok, you will now be able to run the application by clicking on Tools -> NHibernate. To create a button for this, you need to click Tools -> Customize -> Toolbars & then click new, a new menu should appear. Next you need to switch back to Commands, Select Tools and the scroll down until you see all the External Command x’s. Drag External Command 1 onto your new toolbar and then click close. It should change the text from External Command 1 to NHibernate (or whatever name you gave it) and your done!
Hope this helps someone!
Right now that we have
Added event to OFXImporter
Just a quick update, added a OFXFileLoaded event so you can run it on a separate thread and then populate the form. Had to change how it works slightly though:
OFX ofxFile = new OFX(fileName);
ofxFile.OFXFileLoaded += delegate() { DoSomething(); };
ofxFile.ReadFile();
the assembly can be found here.