我正在尝试将 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 感到困惑的原因。必须有办法配置框架如何更新实例。