Posts in category .net - page 25
Haack and the team have worked hard on getting it out so here’s a thanks to them.
I’ve deployed it here with only a couple of minor issues which are most likely due to me previously running a self-modified version off the Subversion trunk. As a result it didn’t quite detect that it needed to upgrade the database nor that my skin was missing and it should use something else for now.
If anyone else has the same problem simply remove the 1.9.0 record from your subversion_version table and it should upgrade the tables and stored procedures appropriately.
Now Subtext is a Web Application Project you can add a deployment project so deploying to live is only two clicks away (you’ll need to install Web Application Project and Web Deployment Project upgrades to VS 2005 first until SP1 gets here)
- Right-click on Subtext.Web and choose Add Web Deployment Project
- Accept the defaults by clicking OK
- Right mouse button on your new
Subtext.Web.csproj_deploydeployment project and choose Property Pages
- Set the output folder to the path to your blog’s home on your live server and hit OK
So now we have almost what we need but we don’t want the live server being deployed to every time we build so:
- Right-click on the
SubtextSolutionand choose Configuration Manager
- Un-check the build for
Subtext.Web.csproj_deployand press Close
Now you can modify, run, debug and test safely on your dev machine until you are happy it’s ready for live.
To deploy to live either build in Release mode or right-click on Subtext.Web.csproj_deploy and choose build.
You can also have the deployment project replace sections of the web.config on the target machine – useful when your live server connects to a different database for example.
Beta 1 of Microsoft’s free XNA Game Studio Express product should be available for download later today.
If you haven’t already got started you’ll need to download the following bits first:
- Visual Studio C# Express (Visual Studio 2005 works for compilation but some of the plug-ins etc. aren’t yet working with it)
- Direct X SDK (August 2006)
- XInput Driver for Microsoft Common Controller (wired controllers only, not wireless+cable)
Then sign up for the beta and come hang out in the IRC channel #xna on irc.quakenet.org.
Selecting the right object-relational mapper is a tricky decision with many factors to weigh up.
One of the basic decisions is whether to go with a dynamic run-time (“black-box”) or a code generator.
I’m not a fan of the run-time approach – the discovery at run-time negatively impacts performance as it often uses reflection (or failing that post-compilation byte code modification) whilst robbing you of compile-time checking, IntelliSense support against your database objects, deployment and potentially licensing issues. In effect, it’s not that much better than a typed dataset.
Code generation provides for a much finer granularity letting you tweak the templates for the performance and features you need whilst also providing full compile-time checking and IntelliSense support.
Tools such as CodeSmith (my personal favorite), MyGeneration (free) do a good job of letting you write these templates and create the necessary ORM code but require being re-run every time you change the schema. During the starting phases of a project this could be quite often and goes against the whole concept of RAD.
So step in SubSonic and it’s build provider approach.
The idea here is that you modify your .config file to include the SubSonic build provider and it’s connection string, drop a simple text file in that lists which tables to work with and you’re done.
SubSonic now goes off to your database via the connection and generates all the code for tables you need and it’s magically there to be used like any other classes. Check out the demo to see just how easy it is.
SubSonic supports a large number of databases, has support for Enterprise Library, is open source and also provides simple “scaffold” pages that let you throw a basic web add/edit/update/delete table maintenance page by just throwing a table name attribute onto an empty page’s form element.
The only downside at this point is that it uses the ActiveRecord pattern for the ORM. If I manage to get some time to spend with it and can knock up a Domain Object + Data Mapper version I’ll let you know.
In a previous post I described a [WeakReference
GitHub has the latest version of EquatableWeakReference