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 に答える