【问题标题】:Fluent NHibernate Configuration invalid or incomplete - 3rd party types in mappingFluent NHibernate 配置无效或不完整 - 映射中的第 3 方类型
【发布时间】:2013-06-06 16:03:52
【问题描述】:

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

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...,

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

谢谢!!

编辑

查看“SpecialType”的源代码,我想我明白了问题所在。这个类有一个私有构造函数。此类的一个实例是使用方法“FromValue(string value)”创建的。我认为这一定是 NHibernate 感到困惑的原因。必须有办法配置框架如何更新实例..

【问题讨论】:

  • 您是否尝试过为SpecialType 类的属性构建映射?例如。 Map(x =&gt; x.SpecialType.Prop1); Map(x =&gt; x.SpecialType.Prop2); 等等?
  • 不。我会试试的。

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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-23
    • 1970-01-01
    • 2014-12-09
    • 2011-03-02
    • 2011-09-05
    • 2011-04-10
    • 2010-11-30
    • 1970-01-01
    相关资源
    最近更新 更多