流利的NHibernate:没有错误的持久性

时间:2013-12-26 17:30:57

标签: c# .net nhibernate fluent-nhibernate

最后一小时对此感到沮丧,无法理解。

有一个班级,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

什么都不做。

1 个答案:

答案 0 :(得分:1)

好吧,我可能有点白痴。 :D我试图单独保存Sender对象,而不是Message对象的属性。然而,更具描述性的错误有助于更快地实现它。