Archive for October, 2009

dotNetZone 1st Architecture Days event – Reconnecting Computers with Business live stream

Almost two years have pasted since I moved to Metadata, a small startup company focusing on The Web, to work as a Software Solutions Architect. During this time I was able to design and develop the company’s web platform, namely MetaCMS and use it to develop large news portals and e-commerce solutions.

Yesterday, I announced my resignation. There are a lot of reasons that lead me to that decision but the main one is that I want to start – try to make it on my own. So starting November, after the TechEd conference, I’ll be starting my very own company focusing, as always, in innovative solutions, cutting edge technologies and wow experiences. So if you have an idea that needs development or need a consultant for your project talk to me.

There are a lot of people I’ve worked with that I would like to thank, I really learned a lot from them. I hope that we’ll get the chance to work together again in the future.

More info coming up, stay tuned…

I briefly got the chance to talk about MetaCMS, the content management system and e-shop platform I’ve designed and built, a while back. Since then a lot of sites have been built using it. Some of which (the biggest ones) include:


And as if building these sites wasn’t enough we’ve decided to completely re-write the platform and built MetaCMS V2. The fact that it had been “tied” to LinqToSql was bothering me all along but due to lack of time didn’t have the time to do something about it. But eventually and although I had put it on “steroids”, the Context has been disposed caching bugs I’ve talked about previously, drove us to completely re-write that part.


So what’s new in this new version, well basically we’ve done two things

  • First we’ve build View Models of serializable POCO (Plain Old CLR Objects) objects, taking advantage of the T4 Visual Studio templating engine and the Linq models we already had. In addition these View Model objects were designed to have lambda expressions that will lazy load related entities once those are requested.
  • Secondly I’ve designed a simple IoC system that instantiates Repositories that are responsible to return data and “Hydrate” the view model objects.


Making these changes we were able to solve the caching problems and the dreadful Context has been disposed exception we were getting when caching Linq objects and at the same time build a more robust, scalable, solution one that can target multiple client technologies (Sliverlight, WPF, etc) and use different Data access methods.

But that’s not all, except from the bug fixes a lot of new features and modules have been added as well. Some of which are:

  • Extensibility support
    Hook into various MetaCMS actions and build your own custom business logic.
  • Messaging platform
    Capable of sending templatized newsletters and Emails.
  • Import / Export
    Import and Export engine that allows communication with arbitrary data sources.
  • Stock Market platform
    Utilizes a provider model to allow communication with any Stock Market data provider (Rueters, XAA etc.)
  • Competition Module
    Supports multiple and recurring competitions with custom winner picking rule engine.
  • Elections
    Build to support Elections with maximum detail and data coming from any provider.

And last but not least the e-commerce part of MetaCMS that has been upgraded to an Enterprise Level solution with all the features even the most demanding shop would need. Speaking of which there is a large e-shop project coming up soon that unfortunately though I still can’t disclose.

Time to stop mumbling… if you have more questions or need a demo get in touch and I’ll arrange it.

If you’ve started playing around Microsoft Azure then you are probably going to appreciate this post ;-). I know I did. Kudos to Ryan Dunn

On Tuesday an azure table Browser service was launched for developers at The service was build using ASP.NET MVC on a rich AJAX interface.  and its goals are to provide developers an easy way to create, query, and manage their Windows Azure tables. with it you’ll be able to:

image_thumb1 image_thumb_2
List, Create, Edit and Delete Tables (Azure Table Entities) Create, Edit, Clone and Delete your Entities’ instances
image_thumb_3 image_thumb_4
Query Entities Display Data

There are quite a few developers that believe that Linq to SQL is dead in favor of EF. That’s not the case though and I have the facts to prove it. Here’s the list of changes that are coming with the next .net framework, .Net 4.0.

  • Query plans are reused more often by specifically defining text parameter lengths (when connecting to SQL 2005 or later)
  • Identity cache lookups for primary key with single result now includes query.Where(predicate).Single/SingleOrDefault/First/FirstOrDefault
  • Reduced query execution overhead when DataLoadOptions specified (cache lookup considers DataLoadOptions value equivalency)
  • ITable<T> interface for additional mocking possibilities
  • Contains with enums automatically casts to int or string depending on column type
  • Associations can now specify non-primary-key columns on the other end of the association for updates
  • Support list initialization syntax for queries
  • LinqDataSource now supports inherited entities
  • LinqDataSource support for ASP.NET query extenders added
Query stability
  • Contains now detects self-referencing IQueryable and doesn’t cause a stack overflow
  • Skip(0) no longer prevents eager loading
  • GetCommand operates within SQL Compact transactions
  • Exposing Link<T> on a property/field is detected and reported correctly
  • Compiled queries now correctly detect a change in mapping source and throw
  • String.StartsWith, EndsWith and Contains now correctly handles ~ in the search string (regular & compiled queries)
  • Now detects multiple active result sets (MARS) better
  • Associations are properly created between entities when using eager loading with Table-Valued Functions (TVFs)
  • Queries that contain sub-queries with scalar projections now work better
Update stability
  • SubmitChanges no longer silently consumes transaction rollback exceptions
  • SubmitChanges deals with timestamps in a change conflict scenario properly
  • IsDbGenerated now honors renamed properties that don’t match underlying column name
  • Server-generated columns and SQL replication/triggers now work instead of throwing SQL exception
  • Improved binding support with the MVC model binder
General stability
  • Binary types equate correctly after deserialization
  • EntitySet.ListChanged fired when adding items to an unloaded entity set
  • Dispose our connections upon context disposal (ones passed in are untouched)
Database  control
  • DeleteDatabase no longer fails with case-sensitive database servers
SQL Metal
  • Foreign key property setter now checks all affected associations not just the first
  • Improved error handling when primary key type not supported
  • Now skips stored procedures containing table-valued parameters instead of aborting process
  • Can now be used against connections that use AttachDbFilename syntax
  • No longer crashes when unexpected data types are encountered
LINQ to SQL class designer
  • Now handles a single anonymously named column in SQL result set
  • Improved error message for associations to nullable unique columns
  • No longer fails when using clauses are added to the partial user class
  • VarChar(1) now correctly maps to string and not char
  • Decimal precision and scale are now emitted correctly in the DbType attributes for stored procedures & computed columns
  • Foreign key changes will be picked up when bringing tables back into the designer without a restart
  • Can edit the return value type of unidentified stored procedure types
  • Stored procedure generated classes do not localize the word “Result” in the class name
  • Opening a DBML file no longer causes it to be checked out of source control
  • Changing a FK for a table and re-dragging it to the designer surface will show new FK’s
Code generation (SQL Metal + LINQ to SQL class designer)
  • Stored procedures using original values now compiles when the entity and context namespaces differ
  • Virtual internal now generates correct syntax
  • Mapping attributes are now fully qualified to prevent conflicts with user types
  • KnownTypeAttributes are now emitted for DataContractSerializer with inheritance
  • Delay-loaded foreign keys now have the correct, compilable, code generated
  • Using stored procedures with concurrency no longer gets confused if entities in different namespace to context
  • ForeignKeyReferenceAlreadyHasValueException is now thrown if any association is loaded not just the first
Potentially breaking changes

We worked very hard to avoid breaking changes but of course any potential bug fix is a breaking change if your application was depending on the wrong behavior. The ones I specifically want to call out are:

Skip(0) is no longer a no-op

The special-casing of 0 for Skip to be a no-op was causing some subtle issues such as eager loading to fail and we took the decision to stop special casing this. This means if you had syntax that was invalid for a Skip greater than 0 it will now also be invalid for skip with a 0. This makes more sense and means your app would break on the first page now instead of subtlety breaking on the second page. Fail fast 🙂

ForeignKeyReferenceAlreadyHasValue exception

If you are getting this exception where you weren’t previously it means you have an underlying foreign key with multiple associations based on it and you are trying to change the underlying foreign key even though we have associations loaded.Best thing to do here is to set the associations themselves and if you can’t do that make sure they aren’t loaded when you want to set the foreign key to avoid inconsistencies.

In the past we mainly processed huge datasets, fast. Today we handle complex processes more aligned to business, in a cost-effective and adaptable manner. In other words we maintain high standards of availability and reliability while reducing development time.
The architect’s life got exciting!
Thursday 22 October, the DotNetZone community invites you to the 1st DotNetZone Architecture Days event to discuss the technologies and architectural patterns that will help you achieve all this in real-life scenarios.  The events will take place at the Microsoft Innovation Centre (103 Vas. Sofias Av., tube station: Megaro Mousikis).
Don’t forget to bring your tough architectural questions for our panel of experts !

Register now here!

09:30 – 10:00  Registrations
10:00 – 11:15  Locating and addressing performance issues: From software to hardware architecture – Diomidis Spinellis
11:15 – 11:30  Break
11:30 – 12:45  Modeling in the Enterprise with Microsoft “Oslo” – Natasa Manousopoulou
12:45 – 13:45  Lunch Break
13:45 – 15:00 Reliability, Availability, and Scalability – Have your cake and eat it too – Udi Dahan
15:00 – 15:15  Break
15:15 – 16:15  Panel: George Marinos (Εθνική Τράπεζα), Panagiotis Kanavos (DNZ)
16:15 – 16:30  Q&A

Speakers’ Bios
Diomidis Spinellis
Bio: Diomidis Spinellis is a Professor in the Department of Management Science and Technology at the Athens University of Economics and Business, Greece.  His research interests include software engineering, computer security, and  programming languages.  He has written the two award-winning “Open Source Perspective” books: “Code Reading” and “Code Quality” as well as dozens of scientific papers.  He is a member of the IEEE Software editorial board, authoring the regular “Tools of the Trade” column.  Dr. Spinellis is a FreeBSD committer and the developer of UMLGraph and other open-source software packages, libraries, and tools.  He holds an MEng in Software Engineering and a PhD in Computer Science, both from Imperial College London.  Dr. Spinellis is senior member of the ACM and the IEEE and a member of the Usenix association.

Natasa Manousopoulou
Bio: Natasa Manousopoulou is a consultant with Microsoft Services, specializing in .NET application development and Application Lifecycle Management. Prior to Microsoft, she has worked as a developer and team lead with LogicDIS/SingularLogic, and as a researcher at ICCS-NTUA. She holds an Electrical and Computer Engineering diploma from NTUA and a PhD on Parallel Natural Language Processing from the same institution.

Udi Dahan
Bio: Udi Dahan is The Software Simplist, an internationally renowned expert on software architecture and design. A solutions architecture and connected systems MVP, 4 years in a row, Mr. Dahan is also one of 33 experts in Europe recognized by the International .NET Association, an author and trainer for the International Association of Software Architects, and an SOA, Web Services, and XML Guru recommended by DDJ. When not consulting, speaking, or training, Udi leads the development of NServiceBus, the most popular open-source service bus for .NET. He can be contacted via his blog:

Join us on the 27th of October at Microsoft Innovation Center to learn all about RIA Services. More Info about the event here: 

Facebook Event Page Save to Outlook 




Καλώς ήρθατε στο Windows Phone Marketplace
Ελάτε και μάθετε όλα όσα χρειάζεται να ξέρει ένας προγραμματιστής όταν ενδιαφέρεται να βγάλει την εφαρμογή του στη διεθνή αγορά!

20 Οκτωβρίου 2009 στο Κέντρο Καινοτομίας (Βασιλίσσης Σοφίας 103 – Δίπλα στο σταθμό του Μετρό: Μέγαρο Μουσικής)

Είστε προγραμματιστής? Πιστεύετε πως το μέλλον στο σχεδιασμό εφαρμογών βρίσκετε ‘στο κινητό σας’? Θέλετε να δείτε πως η Microsoft με το Marketplace σας βοηθά να πουλήσετε την εφαρμογή σας ? Θέλετε να ενημερωθείτε για τις νέες δυνατότητες που σας προσφέρουν τα Windows Phone 6.5? Θέλετε να κερδίσετε στην κλήρωση της ημέρας ένα κινητό με εγκατεστημένα τα Windows Phone 6.5?


Τότε σας περιμένουμε την Τρίτη 20 Οκτωβρίου στο Κέντρο καινοτομίας της Microsoft για να σας παρουσιάσουμε όλα όσα χρειάζεται να ξέρει ένας προγραμματιστής που ενδιαφέρεται να βγάλει την εφαρμογή του στη διεθνή αγορά!Το σεμινάριο έχει τεχνικό περιεχόμενο, περιλαμβάνοντας παρουσιάσεις και demos του Windows Phone. Οι δύο τεχνικές παρουσιάσεις θα πραγματοποιηθούν στα αγγλικά από τον David Goon, Application Development Consultant, Microsoft UK·         Εγγραφείτε ηλεκτρονικά κάνοντας κλικ εδώ.

10:00 – 10:30 Προσέλευση – Εγγραφές
10:30 – 11:00 Windows Phone: μία σύντομη εισαγωγή – Δάφνη Σταυροπούλου
11:00 – 12:00 Windows Mobile Marketplace – Δάφνη Σταυροπούλου (Partner Account Manager, Microsoft Ελλάς)Στα ΕλληνικάΤι είναι, πως δουλεύει, τι έχετε να κερδίσετε σαν προγραμματιστής
12:00 – 12:30 Διάλειμμα – Μπουφές
12:30 – 14:00 Windows Mobile 6.5. for Developers – David Goon (Application Development Consultant, Microsoft UK)Στα ΑγγλικάAttend this session to find out what is new for the mobile developer targeting Windows Mobile 6.5. We will look into the new tool kit for emulators, headers, libraries and documentation. Join us to explore a great new way to write web-enabled applications and how your solutions can provide new user experiences with gestures. You will walk away with an appreciation of the new opportunities Windows Mobile 6.5 brings.
14:00 – 14:15 Διάλειμμα
14:15 – 15:30 Windows Mobile 6.5. A deeper dive! – David Goon (Application Development Consultant, Microsoft UK)Στα ΑγγλικάTechnical information and deep dive on some important tips and tricks: e.g. synchronization framework against merger replication!
15:30 – 16:00 Ερωτήσεις – Κλήρωση
Ο David Goon είναι Σύμβουλος Ανάπτυξης Εφαρμογών και δουλεύει στο τμήμα των Services της Microsoft στην Αγγλία. Τον ενδιαφέρουν οι ‘μικροί’ υπολογιστές και ασχολείται με το Windows Mobile τα τελευταία 5 χρόνια. Εργάζεται με τις ομάδες του customer development, προσφέροντας τους συμβουλές πάνω στην αρχιτεκτονική και την υλοποίηση εφαρμογών, τεχνική υποστήριξη αλλά και επικοινωνία με τα Product Groups της Microsoft. Πριν το 2000 όπου και ήρθε στη Microsoft, ο David δούλευε στην Intel όπου έγραφε κώδικα ως C/C++ προγραμματιστής.

Θα χαρούμε πολύ να σας υποδεχτούμε στην εκδήλωση μας.

Με εκτίμηση,

Ισαβέλλα Μπενέκου
Audience Marketing Manager, Microsoft Ελλάς

Δάφνη Σταυροπούλου
Partner Account Manager, Microsoft





A year has passed and it’s time for the Microsoft TechEd 2009 conference. This year the conference will be hosted at beautiful Berlin. Luckily I’ll be able to attend it (I wouldn’t miss it for the world) so drop me a line if you feel like saying hello. I’ll be available if you want to discuss about ASP.NET, my projects – work , or .NET in general 🙂

For those of you that haven’t registered yet, I strongly suggest that you stop thinking over it and go register today. It’s an experience you’ll never forget.

FileDownload[1] If you have already started playing around SQL Azure you will have probably stumbled on the limitation the SQL Management studio has. So I think you’ll find SQL Azure Explorer rather useful till Microsoft synchronizes its toolset with the Azure platform.

SQL Azure Explorer is an addin for Visual Studio 2010 Beta 1 that will enable you to manage you SQL Azure Tables just live the Visual Studio Server explorer.

Some of the main features right now is:

  • SQL Azure Explorer which contains:
    • Databases
    • Tables with columns
    • Views with columns
    • Stored procedures with parameters
    • Functions with parameters
  • Context menus for:
    • Open SQL Editor Window
    • Select Top 100 Rows
    • Script as CREATE for all tables, views, stored procedures and functions
  • SQL Editor Window with built in:
    • SQL Execute
    • Off line parser
    • Script formatter