Domanda

ho digitato questo esempio semplificato senza il beneficio di un IDE in modo da perdonare eventuali errori di sintassi. Quando provo a Automap questo ho una FluentConfigurationException quando tento di compilare le mappature -

  

"riferimenti associazione di classe non mappata   IEmployee ".

Immagino che se dovessi risolvere questo avrei avuto un errore simile quando incontra il riferimento a IEmployer pure. Io non sono contrario alla creazione di un ClassMap manualmente ma preferisco automapper farlo invece.

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; 
  }
}

Ho provato con .IncludeBase<IEmployee>() ma senza alcun risultato. Si comporta come ho mai chiamato IncludeBase a tutti.

è l'unica soluzione sia non utilizzare le interfacce tra le mie entità del dominio o ripiegare su un ClassMap definito manualmente?

In ogni opzione crea un problema significativo con il modo in cui la mia applicazione è stata progettata. Ho ignorato la persistenza fino a quando avevo finito l'attuazione di tutte le caratteristiche, un errore non sarò ripetere ancora una volta: - (

È stato utile?

Soluzione

Non è una restrizione imposta da Fluent o la sua automapper, ma da NHibernate sé.

Pertanto, non credo che ci si arriva con la mappa della classe manuale. Dovrete perdere le interfacce nelle definizioni delle proprietà e della lista. È possibile mantenere le interfacce, ma proprietà mappate e collezioni necessario utilizzare i tipi concreti di cui NHibernate conosce.

Altri suggerimenti

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
    }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top