Closed diogokrejci closed 3 years ago
@diogokrejci tive o mesmo problema aqui, a única forma de contornar que encontrei foi desabilitar a validação de proxy do NHibernate na configuração da sessionFactory:
configuration.SetProperty(NHibernate.Cfg.Environment.UseProxyValidator, false.ToString());
Acabei removendo o Flunt e adotando outra estratégia, mas essa configuração funcionou (não sei se pode ter algum problema desabilitando isso).
Bom,
Para conseguir usar o Flunt com o NHibernate fiz as seguintes configurações usando as bibliotecas:
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="3.1.8" />
<PackageReference Include="NHibernate" Version="5.3.3" />
<PackageReference Include="MySql.Data" Version="8.0.21" />
<PackageReference Include="FluentNHibernate" Version="3.0.1" />
<PackageReference Include="NHibernate.Driver.MySqlConnector" Version="2.0.0" />
</ItemGroup>
Criei uma classe de extensão do serviço de configuração para uso no Startup.cs
No método AddNHibernate
adicionei a configuração mencionada pelo @walter-psjr usando o Fluently
Fluently.Configure()
.Database(MySQLConfiguration.Standard
.ConnectionString(connectionString))
.Mappings(m =>
{
m.FluentMappings.AddFromAssembly(Assembly.GetExecutingAssembly());
})
.ExposeConfiguration(c =>
{
**c.SetProperty(NHibernate.Cfg.Environment.UseProxyValidator, Boolean.FalseString);**
})
.BuildSessionFactory();
Nos mapeamentos relacionais eu ignorei os Atributos do Flunt pois no meu contexto não se aplicam à persistência. Para isso adicionei a interface IAutoMappingOverride<T>
e no método Override
fiz as configurações abaixo:
public void Override(AutoMapping<MeasurementUnity> mapping)
{
mapping.IgnoreProperty(x => x.Notifications);
mapping.IgnoreProperty(x => x.Valid);
mapping.IgnoreProperty(x => x.Invalid);
}
Com isso consegui usar o Flunt com o NHibernate.
Espero ter ajudado.
Boa tarde André! Estou usando o Flunt e me deparei com uma questão.
Ao utilizar o Nhibernate, ele exige que os métódos Invalid, Valid e Notifications sejam virtual. Existe alguma maneira de eu contornar essa situação?
Obrigado