Vocês tem acompanhado que eu estou ansioso pra usar o NHibernate com .NET Core. Apesar de ele estar disponível desde a versão 5.1.0, que saiu umas semanas atrás, ainda não era possível usar o FluentNHibernate e o FluentMigrator, ambos em processo de migração.

No entanto, as migrações de ambos já estão bem adiantadas, faltando apenas alguns detalhes pra finalizar. Fui validar se estavam funcionando e estão. Atualizei meu projeto de exemplo com NH no .NET Core pra utilizar agora o FluentNH e o FluentMigrator, e vou contar aqui o que eu fiz. Lembrando que este projeto começou com o Victor Cavalcante, de quem eu roubei o código descaradamente.

Primeiro precisei adicionar os feeds de pre release dos dois projetos. O FluentMigrator tem um feed que eles mesmos mantem atualizado, ele está em:
https://www.myget.org/F/fluent-migrator/api/v3/index.json

Já o FluentNHibernate não tem. Eles geram o nupkg durante a build, mas não sobem no MyGet. Então eu fui na última build, baixei o nupkg, que já está com a versão next, que será 2.1.1. Mas como meu pacote não será a versão 2.1.1, eu editei o nupkg e inventei a versão 2.1.1-alpha1. Em seguida subi pra um feed não oficial do Myget, em:
https://www.myget.org/F/fluentnh-nonofficial/api/v3/index.json

Lógico que eu avisei os mantenedores, direto no Github, e já pedi pra eles criarem um feed de pre release oficial. Quando eles fizerem isso eu vou remover o meu feed.

Feito isso, coloquei as referências dos feeds no NuGet.config, instalei o FluentNH e atualizei o código pra usá-lo (criei a classe de mapeamento e alterei a configuração). O uso foi absolutamente idêntico ao do uso com .NET Framework. Não tive nenhuma surpresa aí. Removi os arquivos xml de configuração que estavam no projeto, rodei, e funcionou.

O FluentMigrator foi mais complicado. Não tem muitos docs, porque é uma ferramenta e uma lib, e eles tem um runner independente, feito pra rodar com .NET Framework. A forma de fazer isso no .NET Core até a versão 2.0 é com .NET CLI Tools References (no 2.1 será com global tools). Achei uma tool dessa no feed, e acrescentei no csproj:

<DotNetCliToolReference Include="FluentMigrator.DotNet.Cli" Version="2.0.0-beta0240" />

Acrescentei a dependência também pro pacote FluentMigrator.Core, criei uma migration e rodei. O comando foi:

 dotnet fm migrate --connection 'string conexao' --processor SqlServer2016 --assembly .\bin\Debug\netcoreapp2.0\migrations.dll

E falhou! Deu um erro ao tentar carregar o NHibernate. Oras, mas porque o FluentMigrator quer carregar o NH?

Não me importa. É um bug, não perdi tempo com isso. Criei outro projeto .NET Core 2.0 e movi as dependências de lib e tool pra lá, assim como o código. Rodei novamente, e funcionou.

Concluindo: tudo funcionou. No estado que está me parece que já dá pra começar projetos com essa configuração. Preciso validar cenários mais complexos de mapeamento e migrations, mas até agora tudo indica que o caminho é esse. Imagino que em algumas semanas teremos uma release estável.

Lembrando que o código está disponível no github giggio/exemplonhdnetstandard2.