Introducing ORM Profiler. Beta-testers wanted!

The past few months, I've spent developing (together with Walaa Atef) a general ORM / Data-access profiler for .NET, simply called ORM Profiler. (How's that for a pronounceable name, eh? ;)) As we're now feature complete and about to start the beta-cycle, we're looking for beta-testers. To help you make the decision to test ORM Profiler out, we'll give every beta-tester who is accepted a free full license for ORM Profiler! We're currently looking for 50 beta-testers: 25 LLBLGen Pro users and 25 users of other ORM frameworks/data-access layers. Please read below how to get accepted to the beta and whether your ORM / data-access logic of choice is currently supported by ORM Profiler.

First, let me briefly describe what ORM Profiler does.

ORM Profiler profiles data-access code, which means it intercepts ADO.NET calls, profiles the activity and does analysis on the gathered data. To do so, it places itself between your ORM / data-access code and the DbProviderFactory instance(s) your application use(s). To enable profiling in your application's database activity, you call a single line to register the profiler's interceptor and from then on the ADO.NET activity and queries are logged and profiled. 

The data gathered during profiling is stored in a snapshot, which can be filtered and analyzed using many filters and analysis functions. A visual client offers a handy UI for analysis and viewing the profiled data and for example allows you to pull query execution plans from the database.

So in short: It allows you to gain insight in what your data-access code is doing, find performance problems and quickly learn how to fix them.

I'll now briefly go into some questions I think will be asked a lot in the coming weeks. After that I'll describe the beta-process and how to get into the beta.

Short F.A.Q.:

  • Will ORM Profiler be a free product?
    No, ORM Profiler will be a commercial product, similar to our other product LLBLGen Pro. Introduction pricing will be as follows:
    - LLBLGen Pro customers: €69.-
    - Bundle with 1 new LLBLGen Pro license: €69.- (+ €299.- for LLBLGen Pro)
    - Non-LLBLGen Pro customers: €99.-
    Support is free, as well as upgrades within the v1.x version period.
  • When will ORM Profiler be released?
    ORM Profiler will likely be released at the end of September 2011.
  • Which frameworks are currently supported?
    LLBLGen Pro v3.x runtime framework, Entity Framework v1, Entity Framework v4.x, Massive, Dapper.NET, Linq to SQL (with a few lines of manual-coding). We're currently testing SubSonic and expect it to be supported as well. We also plan to test Microsoft.Data (coming with WebMatrix) before release. Any ORM / data-access layer which uses DbProviderFactory will work, as long as it doesn't expect a specific ADO.NET provider assembly reference. 
  • Which databases are currently supported?
    Any database supported by the supported O/R mapper frameworks / data-access layers, such as: MS Access, SQL Server, Oracle, PostgreSql, Firebird, IBM DB2, MySql, Sybase Adaptive Server Enterprise (ASE), Sybase SQL iAnywhere (ASA), SQLite, VistaDB, as well as any database accessed through ODBC or OleDB (via DbProviderFactory).
  • My application uses only stored procedures, can it profile my application?
    As long as you call your stored procedures with code which uses DbProviderFactory to create connections and commands, it will profile the calls to stored procedures and other ADO.NET activity.
  • How can I profile an application?
    You can profile an application through code (manually creating a snapshot and start recording), from the command line (e.g. from .cmd files) either interactive or non-interactive, and from the Visual UI.
  • Is enabling profiling in my application intrusive? Do I have to add calls all over the place?
    No, you have to do just two things:
    - reference the interceptor assembly from your main application
    - call the interceptor initialization method.
    That's it. (For Linq to Sql, you have to pass a connection object, which is a bit more intrusive. We hope to have this more streamlined in a future update)
  • Does ORM Profiler support multiple ORM frameworks / data-access layers in 1 application?
    Yes. You can profile for example an Entity Framework using application which has optimized parts using Dapper.NET as if it uses one data-access layer.
  • Does ORM Profiler support production profiling?
    Yes, you can switch on/off profiling of your application with 1 line of code at any time. So you can for example create a web-page in your admin part of your web application and enable / disable profiling at will by calling that line of code. If no application is listening to the named pipe the messages are send over, profiling application code has no effect, yet it's more efficient to switch it off completely with the built-in setting for this.
  • Will you continue developing LLBLGen Pro?
    Absolutely :). V3.5 of LLBLGen Pro is planned to go beta at the end of the year. LLBLGen Pro is a mature product (it was first released in 2003), so development of new features slowed down over the years because of that, hence we decided to create an additional product in the data-access / ORM domain.
  • What .NET versions are supported by ORM Profiler?
    .NET 3.5 and up. The application profiled has to be an application running on .NET 3.5 or higher.
  • Ok, I want to become a beta tester, but what do I get in return?
    As a thank-you for your time spent on testing ORM Profiler v1.0, you'll get a free full license of ORM Profiler when ORM Profiler is released at the end of September 2011. If you get accepted as a beta-tester of course, see below :)

How to get into the beta

The beta period will last for 1 month. We will start the beta a.s.a.p. so if you can't use it in the coming weeks, you don't need to apply (sorry for that :)). We're looking for 50 beta testers: 25 registered LLBLGen Pro customers and 25 users of other supported data-access technologies / ORMs. Every beta-tester who is accepted will receive a free full license of ORM Profiler. To apply for one of the 50 available beta-test slots, please do the following:

Mail to with the subject "ORM Profiler beta-tester application" and in the email include your full name and if you're a registered LLBLGen Pro customer, please specify your customer id as well. Additionally, if possible, please describe a little bit about the situation you're going to test ORM Profiler in, e.g. a large web application with large databases or a small desktop application, a WCF service etc., so we get a picture about the situation so we can choose testers across the wide spectrum of applications.

If you're accepted, we'll email you back a.s.a.p. with the non-distributable beta license, the download URL and the information about how to provide feedback and get support during the beta period.

All email addresses as well as other information is treated confidential and will be used only for selecting beta-testers and to send you your licenses.

Ok, a little teaser

Below you see a screenshot which shows the visual UI and three of the views on the same data, which are kept in-sync when you click a query in one of them, so you can navigate through the three views to see the query in different contexts. Click the image for a full size version.

If you have questions, please ask them below in the comments, so I can answer them there as well. I hope you all are as excited about ORM Profiler as we are and we're looking forward to hearing from you!


  • Don't see NHibernate on the list. Is it not supported?

  • Frans and Walaa this looks great!

  • @Alan: NHibernate isn't supported in v1.0, as it doesn't support DbProviderFactory, so our interception mechanism doesn't work. NHibernate loads the ADO.NET providers manually through a reflection based system, so integrating and intercepting ADO.NET activity required a different approach than what we have built in v1.0. We do plan to support NHibernate in v1.1 though, so it is planned, but not in v1.0.

  • @Jeremy:
    - it has more features in analysis, filtering and how to profile.
    - it's not real time as llblgenprof, but snapshot based, which is easier to work with, as you can save them as a unit, and see everything as a unit. The filtering allows you to narrow down what's in the snapshot, focusing you on specific areas.
    - multiple framework support
    - multiple applications at once
    - non-cluttered UI: you have multiple views on the same data which is kept in sync.
    - more informant UI: more information is available to you in clear view, more stack traces.

    One of the reasons to build this profiler was that in general we didn't feel at home with llblgenprof, it wasn't doing what we think is important.

Comments have been disabled for this content.