As discussed in the forum, removing the new() restriction on IRepository would allow it to be used with Interfaces (since concrete types may have storage-specific restrictions on entities - such as MongoDB attributes or AzureTable restrictions in deriving from TableEntity).