【发布时间】:2012-08-17 14:02:21
【问题描述】:
我开始了一个新项目,对于这个项目,我想使用 BasicSample(NHibernate 最佳实践,http://www.codeproject.com/Articles/13390/NHibernate-Best-Practices-with-ASP-NET-1-2nd-Ed)我以前没有使用过它,现在我遇到了问题。在这个项目中,我使用 NHibernate 3.3.1 并修改了 BasicSample 的源代码以使用我的实体。对于每个类模型,我都会收到此错误(仅显示类“月”):
System.TypeInitializationException was unhandled by user code
Message=“嵌套”的类型初始化程序引发了异常。 源=项目.数据 类型名称=嵌套 堆栈跟踪: 在 Project.Data\NHibernateSessionManager.cs:line 28 中的 Project.Data.NHibernateSessionManager.get_Instance() 在 App_Code\NHibernateSessionModule.cs:line 27 中的 Project.Web.NHibernateSessionModule.BeginTransaction(Object sender, EventArgs e) 在 System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 在 System.Web.HttpApplication.ExecuteStep(IExecutionStep 步骤,Boolean& completedSynchronously) 内部异常:NHibernate.InvalidProxyTypeException Message=以下类型不能用作代理: Project.Core.Domain.Calendar.Month:方法 Equals 应该是“公共/受保护的虚拟”或“受保护的内部虚拟” Project.Core.Domain.Calendar.Month:方法 IsTransient 应该是“公共/受保护的虚拟”或“受保护的内部虚拟” Project.Core.Domain.Calendar.Month:方法 get_Year 应该是“公共/受保护的虚拟”或“受保护的内部虚拟” Project.Core.Domain.Calendar.Month:方法 set_Year 应该是“公共/受保护的虚拟”或“受保护的内部虚拟” 块引用
类看起来像:
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();
}
有没有人知道问题出在哪里?我一直在交叉检查我的项目和 BasicSample 项目,但找不到任何不匹配的内容。
2. 谁能帮我解释一下如何使用 DaomainObject 中的 GetHashCode,因为我不知道如何在每个 1234562 中使用这个= 是否应该在此处添加类中的每个属性?
我希望有人可以帮助我。
【问题讨论】:
标签: c# asp.net nhibernate c#-4.0