1

Frecuencia.cs

public class Frecuencia : Modelo<Frecuencia>
{
    ...
    public virtual string FrecuenciaEspecifica { get; set; }
    ...

    protected virtual FrecuenciaEspecifica GetFrecuenciaEspecifica()
    {
        Console.WriteLine(FrecuenciaEspecifica);
    }
}

frecuencia.hbm.xml

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
                  assembly="Dominio"
                  namespace="Dominio">
  <class name="Frecuencia" table="frecuencias">
    ...
    <property name="FrecuenciaEspecifica" />
  </class>
</hibernate-mapping>

如果我打电话GetFrecuenciaEspecifica(),我会得到一个空输出,但如果我尝试: Console.WriteLine(Frecuencia.FrecuenciaEspecifica)另一个类中,我会得到输出值。请参阅下面的图片

图像1

图2

我究竟做错了什么?

4

1 回答 1

0

目前尚不清楚您是如何创建每个实例的,但鉴于您使用的是 NHibernate,我猜想第一个示例(它为 null)不是从 获取的ISession,或者如果您这样做了,则会话已关闭,并且异常正在被 WPF 吞噬。

如果它不是从会话加载的,那么就没有代理,也没有从数据库加载值的机制。您可以通过使用即时窗口和类型来检查这一点,this is NHibernate.Proxy.INHibernateProxy如果该值是false那么您没有从会话中加载它。

如果会话已关闭,并且 WPF 正在吞噬它,则可以使用 Visual Studio 异常对话框在ObjectDisposedException.

于 2013-03-11T16:22:24.863 回答