Entity Framework
Sentry provides an integration with EntityFramework
through the of the Sentry.EntityFramework NuGet package.
Looking for
EntityFramework Core
? That integration is achieved through the Sentry.Extensions.Logging package.
Installation
Copied
Install-Package Sentry.EntityFramework -Version 1.0.0
This package extends Sentry
main SDK. That means that besides the EF features, through this package you'll also get access to all API and features available in the main Sentry
SDK.
Features
- Queries as breadcrumbs
- Validation errors
All queries executed are added as breadcrumbs and are sent with any event which happens on the same scope. Besides that, validation errors are also included as Extra
.
Configuration
There are 2 steps to adding Entity Framework 6 support to your project:
- Call
SentryDatabaseLogging.UseBreadcrumbs()
to either your application's startup method, or into a static constructor inside your Entity Framework object. Make sure you only call this method once! This will add the interceptor to Entity Framework to log database queries. - When initializing the SDK, call the extension method
AddEntityFramework()
onSentryOptions
. This will register all error processors to extract extra data, such as validation errors, from the exceptions thrown by Entity Framework.
Example configuration
For example, configuring an ASP.NET app with global.asax:
global.asax
Copied
public class MvcApplication : System.Web.HttpApplication
{
private IDisposable _sentrySdk;
protected void Application_Start()
{
// We add the query logging here so multiple DbContexts in the same project are supported
SentryDatabaseLogging.UseBreadcrumbs();
_sentrySdk = SentrySdk.Init(o =>
{
// We store the DSN inside Web.config
o.Dsn = new Dsn(ConfigurationManager.AppSettings["SentryDsn"]);
// Add the EntityFramework integration
o.AddEntityFramework();
});
}
// Global error catcher
protected void Application_Error()
{
var exception = Server.GetLastError();
SentrySdk.CaptureException(exception);
}
public override void Dispose()
{
_sentrySdk.Dispose();
base.Dispose();
}
}
Sample
Check out a complete working sample to see it in action.
You can edit this page on GitHub.