Fluent NHibernate配置无效或不完整-映射中存在第三方类型
本文关键字:映射 存在 类型 第三方 配置 NHibernate 无效 Fluent | 更新日期: 2023-09-27 18:17:19
我正在尝试转换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();
配置炸弹和抱怨:
无法确定类型:mynamspace . specialtype…,
'Potential Reasons'集合在异常详细信息中为空。我怀疑这可能是因为"SpecialType"。该类型不重写ToString()..我想知道如果问题是NHibernate不知道如何设置或获得这个属性值?第三方类型是NHibernate的问题吗?我是否需要为映射提供有关如何代理该对象的信息?
谢谢! !
编辑
通过查看'SpecialType'的源代码,我想我看到了问题所在。这个类有一个私有构造函数。这个类的一个实例是使用方法‘FromValue(字符串值)’创建的。我想这一定是NHibernate困惑的原因。必须有办法配置框架如何新闻实例..
私有无参数构造函数对于NHibernate来说很好。只需为它创建一个映射,例如MyClassMap中的组件:
Component(x => x.SpecialType, c =>
{
c.Map(st => st.Prop1);
c.Map(st => st.Prop2);
});