HibernateException:无法从 NHibernate.Driver.MySqlDataDriver 创建驱动程序

HibernateException: Could not create the driver from NHibernate.Driver.MySqlDataDriver

我想在 ASP.NET Core 中使用 FluentNHibernate 创建与 MySQL 服务器的连接,但出现异常。

我的 Fluent 配置:

var config = Fluently.Configure()
                     .Database(MySQLConfiguration
                         .Standard
                         .ConnectionString(cs => cs
                             .Server(dbServer)
                             .Database(dbName)
                             .Username(dbUsername)
                             .Password(dbPassword)))
                     .Mappings(x =>x.FluentMappings.AddFromAssembly(Assembly.GetExecutingAssembly()))
                     .BuildSessionFactory();

异常:

FluentNHibernate.Cfg.FluentConfigurationException: "An invalid or incomplete configuration was used while creating a SessionFactory. Check PotentialReasons collection, and InnerException for more detail."

内部异常:

HibernateException: Could not create the driver from NHibernate.Driver.MySqlDataDriver, NHibernate, Version=5.0.0.0, Culture=neutral, PublicKeyToken=aa95f207798dfdb4.

TargetInvocationException: Exception has been thrown by the target of an invocation.

TypeLoadException: Could not load type 'System.Data.Common.DbProviderFactories' from assembly 'System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.

项目配置:

<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>netcoreapp2.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="FluentNHibernate" Version="2.0.3" />
    <PackageReference Include="Iesi.Collections" Version="4.0.2" />
    <PackageReference Include="log4net" Version="2.0.8" />
    <PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0" />
    <PackageReference Include="MySql.Data" Version="6.10.4" />
    <PackageReference Include="MySql.Data.Entity" Version="6.10.4" />
    <PackageReference Include="MySql.Web" Version="6.10.4" />
    <PackageReference Include="NHibernate" Version="5.0.3" />
    <PackageReference Include="System.Configuration.ConfigurationManager" Version="4.4.0" />
  </ItemGroup>

  <ItemGroup>
    <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.0" />
  </ItemGroup>
</Project>

Link 到 deps.json: http://pastebin.com/pn67pa6y

我该怎么办?

FluentNHibernate 不支持 .NET Core (issue), because NHibernate has not (PR)。

NHibernate PR 计划 v5.1,截止日期为 2017 年 12 月 15 日(撰写本文时)。

mstancombe 有一个用于 .NET Core 的 fork,但你必须自己构建它。