我是新手开发者......
我现在真的需要帮助...... 我刚开始使用.Net的Nhibernate事情... 当我学习继承并尝试它...它让我感到困惑......为什么我会得到这样的错误:
正在初始化[AP.Core.Domain.AccountPayable.APInvoice#API03 / 04/2010 / 001] - 不能初始化代理 - 没有会话。
这是我的xml:
<class xmlns="urn:nhibernate-mapping-2.2" mutable="true" name="AP.Core.Domain.AccountPayable.APAdjustment, AP.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" table="APAdjustment">
<id name="AdjustmentNumber" type="System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<column name="AdjustmentNumber" length="17" />
<generator class="assigned" />
</id>
<property name="Amount" type="System.Decimal, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<column name="Amount" />
</property>
<property name="TransactionDate" type="System.DateTime, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<column name="TransactionDate" />
</property>
<many-to-one class="AP.Core.Domain.AccountPayable.APInvoice, AP.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" lazy="proxy" name="PurchaseInvoice">
<column name="PurchaseInvoice_id" not-null="true" />
</many-to-one>
<joined-subclass name="AP.Core.Domain.AccountPayable.APCreditAdjustment, AP.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" lazy="true" table="APCreditAdjustment">
<key>
<column name="APAdjustment_id" />
</key>
</joined-subclass>
</class>
</hibernate-mapping>
这是继承类:
父类 - &gt;
public class APAdjustment
{
#region :FIELD
private string adjustmentNumber;
private decimal amount;
private DateTime transactionDate;
private APInvoice purchaseInvoice;
儿童类 - &gt;
public class APCreditAdjustment : APAdjustment {
public APCreditAdjustment(){
这是我的数据访问:
public IList<APAdjustment> GetByNameAll()
{
ICriteria criteria = Nhibernatesession.CreateCriteria(typeof(APAdjustment));
return criteria.List<APAdjustment>() ;
}
我的问题是:
当我使用gridview加载数据时... 有效...但我将属性更改为 autogenerate =“true”...我失踪了 “PurchaseInvoice”字段......和我 更改为手动绑定,它 当我编辑那个gridview时 我明白了 错误...
初始化[AP.Core.Domain.AccountPayable.APInvoice#API03 / 04/2010/001] -Could 没有初始化代理 - 没有会话
然后我改变了我的xml ... lazy =“no-proxy”......它仍然 工作...但再次编辑...我明白了 错误再次..我做“评论 选定的行“到我的 协会“多对一”...我真的 它起作用..但那不是我想要的......
CAN ANYBODY能帮助我...... ?? Plizz ...... :(
注意:我几乎忘了它,我使用流利的hibernate生成数据库。从流畅的Hibernate ..i放* .xml文件...所以我的工作到xml NHibernate ...不流利的hibernate事情.. :)
答案 0 :(得分:0)
此异常通常意味着您在会话关闭时尝试访问延迟加载的属性(我在映射文件中看到lazy="proxy"
)。我建议您在访问“PurchaseInvoice”属性之前设置一个断点,并检查您的Session.IsOpen
以查看您的APAdjustment实例所属的会话。
答案 1 :(得分:0)
如果会话为null,那么你现在面临一个完全不同的问题(如果你的sesion是null,你就无法获得上一个错误,我相信你已经改变了代码中的某些内容) 会话管理需要会话管理器和会话上下文类(请参阅nHibernate doc here) 我建议你简化一下你的设计,不要介绍一个你完全理解其含义的会话管理器(虽然会话管理器是很多项目强烈推荐的做法)。只需打开一个像
这样的新会话ISession session = YouSessionFactory.OpenSession()
ICriteria criteria = session.CreateCriteria(typeof(APAdjustment));
并继续摆脱SessionManager(仅用于测试目的)。如果您正在使用延迟加载,则在访问延迟加载的属性时,会话必须打开,可能您的会话管理器无法按预期工作
问候,Marco
答案 2 :(得分:0)
在您的所有协会中,将其放在您的代码中:
未找到= “忽略”