【发布时间】: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 => x.SpecialType.Prop1); Map(x => x.SpecialType.Prop2);等等? -
不。我会试试的。
标签: c# nhibernate fluent-nhibernate asp.net-web-api