Sample repository using Griffin.Framework

Here is small sample repository using Griffin.Framework

using Griffin.Container;
using Griffin.Data.Mapper;
using OneTrueError.GlobalCore.Invitations;
using OneTrueError.GlobalCore.Invitations.Data;

namespace OneTrueError.GlobalCore.SqlServer
    internal class InvitationRepository : IInvitationRepository
        private readonly GlobalUnitOfWork _unitOfWork;

        public InvitationRepository(GlobalUnitOfWork unitOfWork)
            _unitOfWork = unitOfWork;

        public Invitation FindByEmail(string email)
            return _unitOfWork.FirstOrDefault<Invitation>(new {EmailToInvitedUser = email});

        public void Create(Invitation invitation)

        public void Update(Invitation invitation)

As you might have noticed I’m using one Assembly/DLL per SQL engine that we support. It’s not required for Griffin.Framework, but we are using plain ADO.NET for some DB operations and Griffin.Framework for others. Thus having one DLL per SQL engine allows us to write optimized queries without compromises.

In v2 of OneTrueError we are using two different databases. One for global activities like billing and customer accounts and then one customer specific DB for each customer. The reason is that we’ve had customers which gets several GB of error reports each month. Thus to make sure that the DB is responsive for all other customers (even when we are lacking a few efficient indexes) we’ve taken this approach.

When OneTrueError is started we simply use Assembly.Load together with a configuration setting in <appConfig> to be able to load the correct DLLs.

Azure trouble

During the last week I’ve discovered that the Azure hosting isn’t working very well. I’ve reported the problem to Azure. If you have had trouble accessing the site, please let me know.

I’m currently loosing about 1500 visitors every month due to an error in the PHP configuration at Azure.

You can track my progress in the azure forum


It’s been two weeks and the closest they got is asking for the PHP log. And that’s after me telling them what the problem is.

Again, do note that I’m using the WordPress image that they have configured and the PHP edition that they have selected. Still they make no real effort in finding the problem, despite that I’m a paying customer.

Hence I’m going to move both OneTrueError and my blog from Azure. Why use something where you can’t get help when it doesn’t work?

Using both signed versions of log4net

Older versions of log4net has been signed with a different certificate than the new versions of log4net. That means that they have different public tokens and regular <assemblyBinding> doesn’t work. This post will show you have you can use both versions side-by-side.

Continue Reading

Debugging windows services

I’ve written a post before about how I debug windows service (i.e. run them from within Visual Studio without having to use “Attach to process”). I’ve come up with a new easier approach.

Continue Reading