-
Notifications
You must be signed in to change notification settings - Fork 6
ASP.NET Core
Martin Havlišta edited this page Sep 4, 2018
·
33 revisions
Follow these steps to use CoreDdd in ASP.NET Core MVC application (tested with Visual Studio 2017 and .NET Core 2.1):
- Create a new ASP.NET Core MVC project.
- Install CoreDdd.AspNetCore nuget package.
- Install CoreDdd.Nhibernate nuget package.
- Add a new empty NHibernate configurator class, example:
using System.Reflection;
using CoreDdd.Nhibernate.Configurations;
namespace CoreDddSampleAspNetCoreWebApp
{
public class CoreDddSampleNhibernateConfigurator : NhibernateConfigurator
{
protected override Assembly[] GetAssembliesToMap()
{
return new Assembly[0];
}
}
}- Add a new NHibernate config file hibernate.cfg.xml . Here is SQLite example:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
<property name="connection.connection_string">Data Source=CoreDddSampleAspNetCoreWebApp.db</property>
<property name="dialect">NHibernate.Dialect.SQLiteDialect</property>
<property name="connection.driver_class">NHibernate.Driver.SQLite20Driver</property>
<property name="connection.release_mode">on_close</property>
<property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
<property name="show_sql">false</property>
<property name="proxyfactory.factory_class">NHibernate.Bytecode.DefaultProxyFactoryFactory, NHibernate</property>
<property name="transaction.use_connection_on_system_prepare">false</property>
</session-factory>
</hibernate-configuration>Set hibernate.cfg.xml Build Action to Content, and Copy to Output Directory to Copy if newer.
- Install System.Data.SQLite.Core nuget package. Version 1.0.108 needs to be manually installed via command
Install-Package System.Data.SQLite.Core -Version 1.0.108from Package Manager Console (Tools -> Nuget Package Manager -> Package Manager Console; current latest version 1.0.109.1 is broken). For different databases, please look at Entity database persistence. - Add
services.AddSingleton<INhibernateConfigurator, CoreDddSampleNhibernateConfigurator>();intoStartup.ConfigureServices() - Add
services.AddScoped<IUnitOfWork, NhibernateUnitOfWork>();intoStartup.ConfigureServices() - Add
app.UseMiddleware<UnitOfWorkMicrosoftDependencyInjectionMiddleware>(IsolationLevel.ReadCommitted);intoStartup.Configure()
After this, the web application should be able to handle each request within a database transaction. You can check out other wiki pages how to persist an entity, query data, modify an application state or create more complex DDD implementation.