Я получаю следующую ошибку при использовании следующих отображений:
NHibernate.MappingException: Association references unmapped class: GeoTriggers.Domain.Entities.ITrigger
Сущности:
public class Profile
{
public virtual int Id { get; set; }
public virtual string Password { get; set; }
public virtual string Username { get; set; }
public virtual IList<ITrigger> Triggers { get; set; }
}
public interface ITrigger
{
int Id { get; set; }
decimal Latitude { get; set; }
decimal Longitude { get; set; }
decimal Radius { get; set; }
}
public class EmailTrigger : ITrigger
{
public virtual string RecipientAddress { get; set; }
public virtual string SenderAddress { get; set; }
public virtual string Subject { get; set; }
public virtual string Body { get; set; }
#region ITrigger Members
public virtual int Id { get; set; }
public virtual decimal Latitude { get; set; }
public virtual decimal Longitude { get; set; }
public virtual decimal Radius { get; set; }
#endregion
}
Использование следующих карт классов:
public sealed class ProfileMap : ClassMap<Profile>
{
public ProfileMap()
{
HasMany(x => x.Triggers).Cascade.All();
}
}
public sealed class TriggerClassMap : ClassMap<ITrigger>
{
public TriggerClassMap()
{
}
}
public sealed class EmailTriggerClassMap : SubclassMap<EmailTrigger>
{
public EmailTriggerClassMap()
{
}
}
Использование следующей конфигурации FluentNHibernate:
FluentConfiguration fluent = Fluently.Configure(_configuration)
.Mappings(
x => x.AutoMappings.Add(
AutoMap.Assemblies(typeof (TEntity).Assembly).Where(
assembly => assembly.Namespace.Contains("Entities"))));
Все мои сущности находятся в пространстве имен, которое включает в себя слово «Entities».Я сделал это, чтобы избежать необходимости наследования всех моих сущностей от общей базы.
Я пытаюсь свести мою конфигурацию к минимуму, поэтому я решил позволить Fluent NHibernate работать без ограничений по умолчанию.Обычно у меня даже нет файлов карт классов.Но теперь, поскольку я пытаюсь отобразить список объектов, которые реализуют общий интерфейс, он стал залипшим.
Ошибка говорит о том, что ассоциация (я предполагаю, что один-ко-многим в ProfileMap) ссылается на несопоставленный класс (ITrigger).Согласно документам, все, что мне нужно, это карта классов для базового интерфейса и карты подклассов для реализаций.У меня есть это.Чего мне не хватает?