最后一小时对此感到沮丧,无法理解。
有一个班级,Message
:
public class Message : IEntity {
public virtual int Id { get; set; }
public virtual Sender Sender { get; set; }
}
然后是Sender
类,我希望将其存储为({1}}相同的表的组件:
Message
我正在配置NHibernate:
public class Sender : IEntityComponent {
public virtual String Person { get; set; }
public virtual String RawInfo { get; set; }
}
现在这是我没有得到的。 NHibernate创建了100%正确的数据库结构:
public class StorageConfiguration : DefaultAutomappingConfiguration {
public override bool ShouldMap(Type type)
{
return type.GetInterfaces().Any(t => t == typeof(IEntity) || t == typeof(IEntityComponent));
}
public override bool IsComponent(Type type)
{
return type.GetInterfaces().Contains(typeof(IEntityComponent));
}
public override string GetComponentColumnPrefix(FluentNHibernate.Member member)
{
return member.PropertyType.Name + "_";
}
}
但是当我尝试将create table `Messages` (
`Id` INTEGER NOT NULL AUTO_INCREMENT,
`Sender_Person` VARCHAR(255),
`Sender_RawInfo` VARCHAR(255),
primary key (`Id`)
)
记录实际保存到数据库中时,我得到了这个例外:
没有坚持:Www.Entities.Sender
所有搜索结果最终都是“类必须公开”或“您没有加载正确的程序集”。我检查并重新检查了这些,在我看来,在这种情况下它们甚至不能成为原因,因为数据库已成功创建并包含正确的表格和列。
更新:添加/删除
Message
什么都不做。
答案 0 :(得分:1)
Sender
对象,而不是Message
对象的属性。然而,更具描述性的错误有助于更快地实现它。