流畅的NHibernate配置无效或不完整 - 映射中的第三方类型

时间:2013-06-06 16:03:52

标签: c# nhibernate fluent-nhibernate asp.net-web-api

我正在尝试将ASP.NET Web API项目转换为使用Fluent NHibernate。自从我休眠以来已经有一段时间了。我有一个映射到由第三方类型组成的模型。例如:

public MyClass{
public MyClass{}

public virtual int Id {get;set;}
public virtual SpecialType {get;set;} //I don't own the 'SpecialType' class.

}

然后我有一个这个类的简单映射:

public class MyClassMap : ClassMap<MyClass>
{
    public MyClass()
    {
        Id(i => i.Id);
        Map(i => i.SpecialType);          

    }
}

我有以下配置:

return Fluently.Configure()
            .Database(SQLiteConfiguration.Standard
            .ConnectionString(_connString))
            .Mappings(m => m.FluentMappings
                .AddFromAssemblyOf<MyClassMap>())
                .ExposeConfiguration(UpdateSchema)
                .BuildSessionFactory();

配置炸弹和抱怨:

  

无法确定:mynamespace.SpecialType ...,

的类型

'潜在原因'集合在异常详细信息中为空。我怀疑这可能是因为'SpecialType'。该类型确实覆盖ToString()..我想知道问题是NHibernate不知道如何设置或获取此属性值?第三方类型是NHibernate的问题吗?我是否需要提供有关如何代理此对象的信息的映射?

谢谢!

修改

通过源代码查看'SpecialType',我想我知道问题是什么。这个类有一个私有构造函数。使用方法'FromValue(string value)'创建此类的实例。我认为这必然是NHibernate混淆的原因。必须有办法配置框架新闻实例的方式..

1 个答案:

答案 0 :(得分:0)

私有无参数构造函数适用于NHibernate。只需为它创建一个Mapping,例如作为MyClassMap中的组件:

Component(x => x.SpecialType, c => 
{
    c.Map(st => st.Prop1);
    c.Map(st => st.Prop2);
});
相关问题