我開始了一個新項目,併爲這個項目我想使用BasicSample(NHibernate最佳實踐,http://www.codeproject.com/Articles/13390/NHibernate-Best-Practices-with-ASP-NET-1-2nd-Ed)我以前沒有使用過,現在我得到的問題。在這個項目中,我使用NHibernate 3.3.1並修改了BasicSample中的源代碼以使用我的entrators。我得到這個錯誤,每類模型(只顯示爲類「月」):NHibernate BasicSample與Nhibernate 3.3
System.TypeInitializationException was unhandled by user code
消息=爲「套」的類型初始值引發異常。 源= Project.Data 類型名=嵌套 堆棧跟蹤: 在Project.Data.NHibernateSessionManager.get_Instance()在Project.Data \ NHibernateSessionManager.cs:線28 在Project.Web.NHibernateSessionModule.BeginTransaction(對象發件人,EventArgs的)在App_Code文件\ NHibernateSessionModule.cs:線27 在System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 在System.Web.HttpApplication.ExecuteStep(IExecutionStep步驟,布爾& completedSynchronously) 的InnerException :NHibernate.InvalidProxyTypeException Message =以下類型不能用作代理: Project.Core.Domain.Calendar.Month:m方法Equals應該是'public/protected virtual'或'protected internal virtual' Project.Core.Domain.Calendar.Month:方法IsTransient應該是'public/protected virtual'或'protected internal virtual' Project.Core.Domain。 Calendar.Month:方法get_Year應該是'public/protected virtual'或'protected internal virtual' Project.Core.Domain.Calendar.Month:方法set_Year應該是'public/protected virtual'或'protected internal virtual' Blockquote
類的樣子:
public class Month : DomainObject<int>
{
private Year _year;
public Year Year
{
get { return _year; }
set { _year = value; }
}
private string _monthName;
public string MonthName
{
get { return _monthName; }
set { _monthName = value; }
}
private IList<Consumption> consumptions = new List<Consumption>();
public IList<Consumption> Consumptions
{
get { return new List<Consumption>(consumptions).AsReadOnly(); }
protected set { consumptions = value; }
}
public Month()
{ }
public override int GetHashCode()
{
return (GetType().FullName + "|" +
MonthName.GetHashCode()).GetHashCode();
}
anoyone知道問題可能是什麼?我一直在交叉檢查我的項目和BasicSample項目,但我找不到任何錯過的東西。
2.有人能爲我解釋如何使用DaomainObject中的GetHashCode,因爲我不知道如何在每個類中使用這個類=應該將類中的每個屬性添加到此處嗎?
我希望有人能幫助我。
我讓所有成員公開虛擬。然後,我嘗試作爲示例項目..他們沒有虛擬。我已經改回虛擬,但我仍然得到相同的錯誤 – Thommie 2012-08-17 14:14:48
你的DomainObject應該有Id作爲虛擬成員。那就是問題所在。還有DomainObject的其他成員。 – 2012-08-17 14:19:35
另外,在那裏,它應該足以讓GetHashCode/Equals覆蓋在DomainObject中。 – 2012-08-17 14:20:25