Nhibernate Conformist Mapping "Невозможно определить тип..."
Класс:
public class SOPProcess : ISOPProcess
{
public virtual Guid Id { get; set; }
public virtual SOP SOP { get; set; }
public virtual ProcessType Type { get; set; }
public virtual SOPProcessInput Input { get; set; }
public virtual SOPProcessOutput Output { get; set; }
public virtual SOPProcessMeasures Measures { get; set; }
public virtual decimal YieldFactor { get; set; }
public virtual SOPProcess PreviousProcess { get; set; }
public virtual SOPProcess NextProcess { get; set; }
}
Отображение:
public class SOPProcessMap : ClassMapping<SOPProcess>
{
public SOPProcessMap()
{
Id(s => s.Id, i => i.Generator(Generators.GuidComb));
Property(s => s.YieldFactor);
ManyToOne(s => s.SOP, m =>
{
m.Column("SopId");
m.Cascade(Cascade.All);
});
ManyToOne(s => s.Type, m =>
{
m.Column("ProcessTypeId");
m.Cascade(Cascade.All);
});
ManyToOne(s => s.NextProcess, m =>
{
m.Column("NextProcessId");
m.Cascade(Cascade.All);
});
ManyToOne(s => s.PreviousProcess, m =>
{
m.Column("PreviousProcessId");
m.Cascade(Cascade.All);
});
}
}
Ошибка:
NHibernate.MappingException: не удалось определить тип для: MES.ProcessManager.SOP.SOPProcess, MES.ProcessManager, для столбцов: NHibernate.Mapping.Column(id)
Я надеюсь, что это что-то простое, это мой первый проект с использованием сопоставления Conformist, поэтому, возможно, я просто что-то пропустил.
Ответы
Ответ 1
Из нашего обсуждения списка рассылки nhusers.
Я столкнулся с теми же проблемами.
Вы не определили тип отношения. См. Строку action = > action.OneToMany()); в приведенном ниже отображении.
public class SportMap : ClassMapping<Sport>
{
public SportMap()
{
Id(x => x.Id, map =>
{
map.Column("Id");
map.Generator(Generators.GuidComb);
});
Property(x => x.Name, map =>
{
map.NotNullable(true);
map.Length(50);
});
Bag(x => x.Positions, map =>
{
map.Key(k => k.Column(col => col.Name("SportId")));
map.Cascade(Cascade.All | Cascade.DeleteOrphans);
},
action => action.OneToMany());
Property(x => x.CreateDate);
Property(x => x.CreateUser);
Property(x => x.LastUpdateDate);
Property(x => x.LastUpdateUser);
}
}
Ответ 2
Оказалось, что проблема была в моих сетках в других классах. Если вы не укажете действие для сопоставления, оно вызывает эту (вводящую в заблуждение) ошибку.