Может ли AutoMapper Fluent NHibernate обрабатывать типы интерфейсов?

Я набрал этот упрощенный пример без использования IDE, поэтому простите любые синтаксические ошибки. Когда я пытаюсь автоматизировать это, я получаю FluentConfigurationException, когда пытаюсь скомпилировать сопоставления -

«Ассоциация ссылается на несопоставленный класс IEmployee».

Я предполагаю, что если бы я решил это, я бы получил аналогичную ошибку, когда он также встретит ссылку на IEmployer. Я не против создания ClassMap вручную, но предпочитаю, чтобы это делал AutoMapper.

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

Я пытался использовать .IncludeBase<IEmployee>(), но безрезультатно. Это действует так, как будто я вообще никогда не вызывал IncludeBase.

Является ли единственным решением либо не использовать интерфейсы в объектах моего домена, либо использовать вручную определенную ClassMap?

Любой вариант создает серьезную проблему с тем, как разработано мое приложение. Я игнорировал настойчивость, пока не закончил реализацию всех функций, ошибка, которую я больше не повторю :-(


person Kenneth Cochran    schedule 08.01.2010    source источник


Ответы (1)


Это ограничение наложено не Fluent или его AutoMapper, а самим NHibernate.

Поэтому я не думаю, что вы доберетесь туда с ручной картой классов. Вам придется потерять интерфейсы в определениях свойств и списков. Вы можете сохранить интерфейсы, но отображаемые свойства и коллекции должны использовать конкретные типы, известные NHibernate.

person David M    schedule 08.01.2010
comment
stackoverflow.com/questions/845536/845714#845714 указывает, что это/было и проблема с Fluent, когда комментарии были написано. Я проверил трекер проблем, но не смог его найти. Интересно, вошло ли исправление в 1.0 RTM? - person Kenneth Cochran; 08.01.2010