Pergunta

Eu digitei este exemplo simplificado, sem o benefício de um IDE de modo perdoar quaisquer erros de sintaxe. Quando tento AUTOMAP este eu recebo um FluentConfigurationException quando tento compilar os mapeamentos -

"referências associação de classe não mapeada IEmployee. "

Eu imagino que se eu fosse para resolver este eu recebo um erro semelhante quando encontra a referência ao IEmployer também. Eu não sou contra a criação de um ClassMap manualmente, mas eu prefiro AutoMapper fazê-lo em seu lugar.

public interface IEmployer 
{ 
  int Id{ get; set; } 
  IList<IEmployee> Employees { get; set; } 
} 

public class Employer: IEmployer 
{ 
  public int Id{ get; set; } 
  public IList<IEmployer> Employees { get; set; } 
  public Employer() 
  { 
    Employees = new List<IEmployee>(); 
  } 
} 

public interface IEmployee 
{ 
  int Id { get; set; } 
  IEmployer Employer { get; set; } 
} 

public class Employee: IEmployee 
{ 
  public int Id { get; set;} 
  public IEmployer Employer { get; set;} 
  public Employee(IEmployer employer) 
  { 
    Employer = employer; 
  }
}

Eu tentei usar .IncludeBase<IEmployee>() mas sem sucesso. Ele age como se eu nunca chamou IncludeBase em tudo.

É a única solução para ou não usar interfaces em meus entidades de domínio ou cair para trás em um ClassMap definido manualmente?

opção ou cria um problema significativo com a forma como o meu aplicativo foi projetado. Ignorei persistência até que eu tinha terminado a implementação de todas as características, um erro eu não vou repetir mais uma vez: - (

Foi útil?

Solução

Não é uma restrição imposta pela Fluente ou seu AutoMapper, mas por si só NHibernate.

Por isso, não acho que você chegar lá com o mapa classe manual. Você vai ter que perder as interfaces nas definições de propriedade e de lista. Você pode manter as interfaces, mas propriedades mapeadas e coleções deve usar os tipos concretos de que NHibernate sabe.

Outras dicas

public class PersonMap : ClassMap<Person>
{
    public PersonMap()
    {
        Id(x => x.Id);
        Map<Address>(x => x.Address); // Person.Address is of type IAddress implemented by Address
    }
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top