erro Fluent NHibernate Automapping
-
06-09-2019 - |
Pergunta
Este tem-me coçar a cabeça, por isso estou esperando um segundo par de olhos pode me ajudar aqui.
Configuração:
Eu tenho uma classe base chamada DomainEntity que toda a minha transferência de dados objetos de uso. É basicamente apenas define uma propriedade chamada ID (que é um inteiro).
Eu tenho objetos de transferência de dados: Blog, Post, Usuário DomainEntity está no Core.Domain namespace, os objetos de transferência de dados estão sob Core.Domain.Model
Eu tenho o seguinte código construtor sessão:
return Fluently.Configure()
.Database(SQLiteConfiguration.Standard.UsingFile("c:\blog.db"))
.Mappings(x => x.AutoMappings.Add(
AutoPersistenceModel.MapEntitiesFromAssemblyOf<Blog>()
.Where(type =>
type.Namespace.EndsWith("Domain.Model") &&
!type.IsAbstract &&
type.IsClass &&
type.GetProperty("Id") != null)
)).BuildSessionFactory();
Quando tento testar uma consulta simples, eu recebo uma exceção de aplicativo no código acima (em algum lugar) ea mensagem de erro é:
System.ApplicationException: Erro ao tentar construir o mapeamento documento para 'Core.Domain.DomainEntity' ---> NHibernate.MappingException: Não foi possível compilar o documento de mapeamento: (XmlDocument) ---> System.IndexOutOfRangeException: Índice estava fora dos limites da matriz.
Parece que meu código / NHibernate está tentando mapear DomainEntity, mas está falhando. Eu pensei que meu código acima explicitado não para mapear o objeto usando a type.Namespace.EndsWith ( "Domain.Model"). Isso está correto? Onde vou desviar aqui?
Obrigado por toda e qualquer ajuda.
Solução
Parece que eu esqueci a seguinte linha:
.WithSetup(a => a.IsBaseType = type => type == typeof(DomainEntity))
Assim, em sua totalidade, meus novos olhares de código de mapeamento automático como este:
return Fluently.Configure()
.Database(SQLiteConfiguration.Standard.UsingFile("c:\\blog.db"))
.Mappings(x => x.AutoMappings.Add(
AutoPersistenceModel.MapEntitiesFromAssemblyOf<Blog>()
.WithSetup(a => a.IsBaseType = type => type == typeof(DomainEntity))
.Where(type =>
type.Namespace.EndsWith("Domain.Model") &&
!type.IsAbstract &&
type.IsClass &&
type.GetProperty("Id") != null)
)).BuildSessionFactory();
Isto parece ter apagado o meu erro para cima.