Hanalei, Hawaii Tuesday, February 09, 2010

SubSonic 3.0 is Released

At some point you need to stop polishing and let it go already – so I did just that today: SubSonic 3.0 is released.

At some point you need to stop polishing and let it go already – so I did just that today: SubSonic 3.0 is released. This thing took me just about a year to finish up, and a lot of work has gone into it.

So, what’s new? Well…

Should You Care?
That’s a tough question – so it’s the first I’ll address.

  • If you like Linq and you’re not working with SQL Server and EF is a bit much for you – yes.
  • If you like Linq and you are working with SQL Server… well nobody ever got fired for using Microsoft :) so “maybe”. Linq to SQL is awesome and it’s not dead :).
  • If you like a “low-friction” approach from a helper framework – then yes. You can’t get much lower-friction then SimpleRepository.
  • If you like SubSonic to begin with, then yes. There’s still the same grooviness here.

Should You Be Afraid?
Hopefully not - I've really tried to test the tar out of this thing before letting it go (that's why this took me so long). I've had a lot of help with this (many thanks to Eric, Paul, George Capnias, and Jim Zimmerman) and a lot folks reporting bugs (and a TON) of patches so hopefully it's solid. That said - this is a major release and it's also Open Source. You will need to be a bit flexible and hopefully you won't mind helping us out. Which brings me to my final point...

Our Repo Has Moved. Yes, Again
All was going very well until 3 things happened:

  1. I needed to put the 3.0 repo together with the 2.0 repo. It’s not a branch – it’s its own repo for sure. 2.2 is not a “tag” so… what to do? The only thing to do is to have the trunk split into versions which is ALL kinds of messy. I needed another repo for my project, and Google doesn’t let you do that.
  2. I needed a really cool, collaborative system for our template sharing, which also should have its own repo.
  3. Google SVN began to crumble and crash on me, causing me to drop/reload every week or so.

I’ve been using GitHub for a while and I absolutely LOVE it (more on that later) so with this release, we’ve moved to GitHub. I’ve kept the Google site open so we can work on existing issues, etc but I’ll be closing it in the coming month or so.

The Goods

I’m going to go have a beer or five and then go blow stuff up for the 4th like a good Amrrrcan.


Haacked - July 3, 2009 - First! ;)

congrats man! Releasing is such a ... Well ... Release!
Brad Wilson - July 4, 2009 - Second! That's all. :) (Seriously, congrats!)
bbqchickenrobot - July 4, 2009 - Third! And I love Rob Conery and Subsonic! 3 is here!! w00t!
erick - July 4, 2009 - thnx u Rob, awesome !! superb !!
bbqchickenrobot - July 4, 2009 - Just in time for a new project that i'm working on! no esta muerta! xD
josh - July 4, 2009 - congrats and yay! ..or yikes and away! (obscure Daffy Duck reference)
jgarcia - July 4, 2009 - thnx Rob this looks great....
ozzie - July 4, 2009 - uber excited! just casually browsed to the site today and nearly passed out when i saw the big 3! been reading the docs and it looks awesome! especially with linq built-in and all! that's it.. i'm taking something to calm me down over here.. wayteego!
sedgey - July 4, 2009 - Congrats Rob like the black dog backing for the intro screencast! Rock on! silly question.. how does 3 fair in a shared hosting environment? or should we be choosing 2 for that?
robconery - July 4, 2009 - It works just fine!
bbqchickenrobot - July 4, 2009 - hmmm... i'm getting errors on the LinqTemplates for the generated classes in the foreign key region. ... getting an error about a missing GetRepo() method.... wondering if anyone else was able to get this work? Wondering if I'm missing something here... public IQueryable<Product> Products { get { var repo=AdventureWorks.Product.GetRepo(); return from items in repo.GetAll() where items.ProductID == _ProductID select items; } }
Esico - July 4, 2009 - Great project site too!
Mads - July 4, 2009 - Great job!
DotnetShadow - July 4, 2009 - Congrats on releasing this much appreciated on the efforts you guys put in. For those that use Subsonic 2.2 how easy is it use the new Subsonic 3.0 bits, is it simply just regenerating the classes and adding the Subsonic 3.0 dll or have a few things changed that may cause problems? Is it backward compatible? Also I noticed that Substage isn't included? Will there be a version for 3.0?
Mike - July 4, 2009 - Sweet
Larry Andersen - July 4, 2009 - Good job Rob and Co. One question I have though. I browsed around the docs and I didn't see anything related to transactional support. I've got an application that I would love to use the ActiveRecord approach on but I absolutely need to be able to wrap multiple saves/deletes in a transaction some where. Does SubSonic support transactions and if so, can you provide or point me to an example? Thanks.
robconery - July 4, 2009 - I've had reports of this and I'm trying very hard to find it! I fixed this a while ago and I can't find the problem...
Esico - July 4, 2009 - Hi Larry It's easy, this is what you need: http://subsonicproject.com/docs/3.0_Transactions
Jim W - August 19, 2009 - @DotnetShadow,

I've been using SubSonic 2.x for a while with a lot of projects. I've been trying to implement SubSonic 3.0 in a new smaller project and it's a lot different than SubSonic 2.x. Based on what I see, if you have a working project in 2.x, you should probably keep it in 2.x and not even consider migrating it to 3.x. Otherwise, you'll be stuck recoding a lot of stuff. For example, the biggest shock is requirement to use Linq for everything. Simple stuff like FetchById and FetchByParameter is gone and you need to use Linq for that stuff.

I've written a few methods that can be added to the tt files to simulate how FetchById and FetchByParameter worked in 2.x and I'm going to post the code snippets and a quick 2.x/3.0 comparison in a few days (probably to my blog then to the github site).

As far as I can tell, its not backwards compatible with 2.x.

-Jim
Gecko