.Net Core 2.0 Microsoft.Data.SQLite driver for NHibernate 5.1 and FluentNHibernate
With release of NHibernate 5.1 the framework is now compatible with .Net Core 2.0 and .Net Standard 2.0. So I fired up my Visual Studio Mac and wanted to try it out a bit. I also wanted to take a look at FluentNHibernate, which doesn't provide .Net Standard or .Net Core packages yet but it still works with warnings.
So I was trying out the sample project that FluentNHibernate provides and ran into the problem that System.Data.SQLite
isn't working on Mac with .Net Core projects. Some searching pointed me towards Microsoft.Data.SQLite implementation that is compatible with .Net Core. I couldn't make it work at first though because SQLite NHibernate and FluentNHibernate access always wanted to use System.Data.SQLite
.
Then I stumbled over this StackOverflow Answer. I was able to adapt it to use Microsoft.Data.SQLite
which you can find the MicrosoftDataSQLiteDriver
and MicrosoftCoreSQLiteConfiguration
classes.
Copy the MicrosoftDataSQLiteDriver.cs
into your project and point to it in your NHibernate configuration.
<property name="connection.driver_class">NHCoreTest.MicrosoftDataSQLiteDriver</property>
<property name="dialect">NHibernate.Dialect.SQLiteDialect</property>
If you use FluentNHibernate copy MicrosoftCoreSQLiteConfiguration.cs
into your project and use it to fluently configure your SessionFactory.
private static ISessionFactory CreateSessionFactory() {
return Fluently.Configure()
.Database(
MicrosoftCoreSQLiteConfiguration.Standard
.UsingFile("nhcoretest.db")
)
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<Program>())
.ExposeConfiguration(BuildSchema)
.BuildSessionFactory();
}
If you have any comments about this feel free to contact me.