我有我想作爲組分映射到包含它的任何表的類:功能NHibernate - 映射的實體作爲不同類型的
public class Time
{
public int Hours { get; set; }
public int Minutes { get; set; }
public int Seconds { get; set; }
}
我想這個類存儲爲bigint
在數據庫中 - 與存儲TimeSpan
的方式相同,但我的班級有完全不同的行爲,所以我決定創建自己的班級。
我正在使用FLH的automapper並將此類設置爲組件(其他類有Time
作爲屬性)。據我得爲創建覆蓋,但我不知道如何去了解它映射:
我給它一個嘗試這種方式:
public class TimeMappingOverride : IAutoMappingOverride<Time>
{
public void Override(AutoMapping<Time> mapping)
{
mapping.Map(x => x.ToTimeSpan());
mapping.IgnoreProperty(x => x.Hours);
mapping.IgnoreProperty(x => x.Minutes);
mapping.IgnoreProperty(x => x.Seconds);
}
}
但得到這個錯誤:
Unable to cast object of type 'System.Linq.Expressions.UnaryExpression' to type 'System.Linq.Expressions.MethodCallExpression'.
我該怎麼處理?
我希望可能有某種方式迫使NHibernate將這個類映射爲'TimeSpan'。該類本身具有隱式運算符來自'TimeSpan'。 – 2010-09-01 16:23:08
@David你可以像我之前描述的那樣完成相同的操作 - 創建一個'TimeSpan'類型的私有成員並讓NHibernate獲取/設置它。給定隱式運算符,您的公共屬性和方法可以獲取/設置此私有成員的值。 – Jay 2010-09-01 16:50:33