コレクションを初期化できませんでした-FluentNhibernate

セバスチャン

オブジェクトのコレクションを処理するときにエラーが発生します

これが私のコードです:

Take.cs

public class Toma
{
    public virtual int TomaID { get; protected set; }
    public virtual DateTime FechaCarga { get; set; }
    public virtual String TipoDocumento { get; set; }
    public virtual String NroDocumento { get; set; }
    public virtual Boolean Procesada { get; set; }

    private IList<Dedo> dedos;
    public virtual IList<Dedo> Dedos 
    {
        get { return dedos; }
        protected set { dedos = value; }
    }
    private IList<Firma> firmas;
    public virtual IList<Firma> Firmas 
    {
        get { return firmas; }
        protected set { firmas = value; } 
    }
    private IList<Foto> fotos;
    public virtual IList<Foto> Fotos 
    {
        get { return fotos; }
        protected set { fotos = value; }
    }

    public Toma()
    {
        dedos = new List<Dedo>();
        firmas = new List<Firma>();
        fotos = new List<Foto>();
    }

    public virtual void MarcarComoProcesada()
    {
        this.Procesada = true;
        this.Dedos[0].Imagen = new Byte[] { 0x20 };
        this.Firmas[0].Imagen = new Byte[] { 0x20 };
        this.Fotos[0].Imagen = new Byte[] { 0x20 };
        //throw new NotImplementedException();
    }

    internal static IList<Toma> GetAll()
    {
        throw new NotImplementedException();
    }
}

Finger.cs

public class Dedo
{
    public virtual int DedoID { get; protected set; }
    public virtual Byte[] Imagen { get; set; }
    public virtual Toma Toma { get; set; }
}

Company.cs

public class Firma
{
    public virtual int FirmaID { get; protected set; }
    public virtual Byte[] Imagen { get; set; }
    public virtual Toma Toma { get; set; }
}

Foto.cs

public class Foto
{
    public virtual int FotoID { get; protected set; }
    public virtual Byte[] Imagen { get; set; }
    public virtual Toma Toma { get; set; }
}

私のマッピング:

Take.cs

public class TomaMap : ClassMap<Toma>
{
    public TomaMap()
    {
        Table("Bio_Toma");
        Id(x=>x.TomaID).Column("TomaId");
        Map(x => x.FechaCarga);
        Map(x => x.TipoDocumento);
        Map(x => x.NroDocumento);
        Map(x => x.Procesada);
        HasMany(x => x.Dedos).Inverse().Cascade.All().KeyColumn("DedoID").Inverse();
        HasMany(x => x.Firmas).Inverse().Cascade.All().KeyColumn("FirmaID").Inverse();
        HasMany(x => x.Fotos).Inverse().Cascade.All().KeyColumn("FotoID").Inverse();
    }
}

Finger.cs

public class DedoMap : ClassMap<Dedo>
{
    public DedoMap()
    {
        Table("Bio_Dedo");
        Id(x => x.DedoID);
        Map(x => x.Imagen);
        References(x => x.Toma).Column("TomaID");
    }
}

Company.cs

public class FirmaMap : ClassMap<Firma>
{
    public FirmaMap()
    {
        Table("Bio_firma");
        Id(x => x.FirmaID);
        Map(x => x.Imagen);
        References(x => x.Toma).Column("TomaID");
    }
}

Foto.cs

public class FotoMap : ClassMap<Foto>
{
    public FotoMap()
    {
        Table("Bio_Foto");
        Id(x => x.FotoID);
        Map(x => x.Imagen);
        References(x => x.Toma).Column("TomaID");
    }
}

そして、私がエラーを受け取っているところ:

                foreach (Toma toma in tomas)
                {
                      ... some other things...

                    if(toma.Fotos != null)
                    {
                        foreach (Foto foto in toma.Fotos) // HERE
                            fs.Write(foto.Imagen);
                    }
                     .... more code ....
                }

質問を確認し、そこで提案された変更を加えると、エラーを修正できませんでした。エラーが処理しなければならないオブジェクトの数であるかどうかを考えています。「トーマス」オブジェクトの数は41kです。これらの場合、セッションオブジェクトに何らかの制限がありますか?

編集:例外

'NHibernate.Exceptions.GenericADOException' en NHibernate.dll

 Additional information:could not initialize a collection
 [MJYS.DGSPR.Infraestructura.Entidades.Toma.Firmas#1039][SQL: SELECT firmas0_.FirmaID
 as FirmaID1_, firmas0_.FirmaID as FirmaID1_0_, firmas0_.Imagen as Imagen1_0_,
 firmas0_.TomaID as TomaID1_0_ FROM Bio_firma firmas0_ WHERE firmas0_.FirmaID=?]
ラディムケーラー

問題は、の誤解に隠されていKeyColumnます。<key column"">以下の場合に、使用されているHasManyように、カラム内部の名前コレクションテーブルバック親を参照するテーブル。

このシナリオでは、列TomaIDである可能性が高いため、マッピングは次のようになります。

HasMany(x => x.Dedos)
  //.Inverse().Cascade.All().KeyColumn("DedoID").Inverse();
  .Inverse().Cascade.All().KeyColumn("TomaID").Inverse();
HasMany(x => x.Firmas)
  //.Inverse().Cascade.All().KeyColumn("FirmaID").Inverse();
  .Inverse().Cascade.All().KeyColumn("TomaID").Inverse();
HasMany(x => x.Fotos)
  //.Inverse().Cascade.All().KeyColumn("FotoID").Inverse();
  .Inverse().Cascade.All().KeyColumn("TomaID").Inverse();

このマッピングは次のように言っています。NHibernateは、soma Tomasオブジェクトの子を検索するときに、そのIDを取得し、ターゲットテーブル(列TamaID)内で検索​​します。

そして、それは最終的に人生の輪を完成させます。なぜなら、その列は、各子コレクションエンティティの逆マッピングで使用したものと同じでなければならないからです。

...
References(x => x.Toma).Column("TomaID");

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

FluentNHibernate「プロパティを解決できませんでした」

分類Dev

FluentNhibernateを使用したOracle12cIdentity列

分類Dev

FluentNHibernateで子を削除する方法

分類Dev

FluentNHibernate:子コレクションをディスクリミネーターでマッピング

分類Dev

FluentNhibernateで単純なツリーを永続化する

分類Dev

Fluentnhibernateは複数のテーブルをマップします

分類Dev

FluentNHibernate-ProjectionList-ICriteriaがnull値を返しています

分類Dev

FluentNHibernateでdefault-cascadeを設定する方法

分類Dev

FluentNHibernateコンポーネントマッピングの問題

分類Dev

FluentNHibernateを使用してCompositeIdの参照をマップする方法

分類Dev

c#FluentnHibernateの主キーは外部キーです

分類Dev

デフォルト値を使用したDateTimeのFluentNHibernateマッピング

分類Dev

FluentNHibernate-エンティティを多対多で更新する方法は?

分類Dev

FluentNHibernateコンポジットIDの長さが正しく設定されていません

分類Dev

FluentNHibernate-依存関係の1つが存在しない場合はエンティティを返しません

分類Dev

SpringBootでロールのコレクションを遅延初期化できませんでした

分類Dev

一意のコレクション内の一意でないオブジェクトに関するFluentNHibernateカスケード保存の問題

分類Dev

コンテンツを書き込めませんでした:ロールのコレクションを遅延初期化できませんでした

分類Dev

ElementCollectionおよび「ロールのコレクションを遅延初期化できませんでした」例外

分類Dev

Hibernate org.hibernate.LazyInitializationException:ロールのコレクションを遅延初期化できませんでした:

分類Dev

org.hibernate.LazyInitializationException:ロールのコレクションを遅延初期化できませんでした

分類Dev

「ロールのコレクションを遅延初期化できませんでした」

分類Dev

修正できないので、ロールのコレクションを遅延初期化できませんでした:プロキシを初期化できませんでした-セッションがありません

分類Dev

FluentNHibernate-子テーブルからの複合マッピング

分類Dev

Spring Dataはロールのコレクションを遅延して初期化できませんでした、プロキシを初期化できませんでした-セッションがありません

分類Dev

ロールのコレクションを遅延初期化できませんでした:User.authorities、プロキシを初期化できませんでした-セッションがありません

分類Dev

ロールのコレクションを遅延初期化できませんでした:User.authorities、プロキシを初期化できませんでした-セッションがありません

分類Dev

Hibernate-ロールのコレクションを遅延初期化できませんでした:プロキシを初期化できませんでした-セッションがありません

分類Dev

ロールのコレクションを遅延初期化できませんでした:myapp.myapp.models.Contact.messages、プロキシを初期化できませんでした-セッションがありません

Related 関連記事

  1. 1

    FluentNHibernate「プロパティを解決できませんでした」

  2. 2

    FluentNhibernateを使用したOracle12cIdentity列

  3. 3

    FluentNHibernateで子を削除する方法

  4. 4

    FluentNHibernate:子コレクションをディスクリミネーターでマッピング

  5. 5

    FluentNhibernateで単純なツリーを永続化する

  6. 6

    Fluentnhibernateは複数のテーブルをマップします

  7. 7

    FluentNHibernate-ProjectionList-ICriteriaがnull値を返しています

  8. 8

    FluentNHibernateでdefault-cascadeを設定する方法

  9. 9

    FluentNHibernateコンポーネントマッピングの問題

  10. 10

    FluentNHibernateを使用してCompositeIdの参照をマップする方法

  11. 11

    c#FluentnHibernateの主キーは外部キーです

  12. 12

    デフォルト値を使用したDateTimeのFluentNHibernateマッピング

  13. 13

    FluentNHibernate-エンティティを多対多で更新する方法は?

  14. 14

    FluentNHibernateコンポジットIDの長さが正しく設定されていません

  15. 15

    FluentNHibernate-依存関係の1つが存在しない場合はエンティティを返しません

  16. 16

    SpringBootでロールのコレクションを遅延初期化できませんでした

  17. 17

    一意のコレクション内の一意でないオブジェクトに関するFluentNHibernateカスケード保存の問題

  18. 18

    コンテンツを書き込めませんでした:ロールのコレクションを遅延初期化できませんでした

  19. 19

    ElementCollectionおよび「ロールのコレクションを遅延初期化できませんでした」例外

  20. 20

    Hibernate org.hibernate.LazyInitializationException:ロールのコレクションを遅延初期化できませんでした:

  21. 21

    org.hibernate.LazyInitializationException:ロールのコレクションを遅延初期化できませんでした

  22. 22

    「ロールのコレクションを遅延初期化できませんでした」

  23. 23

    修正できないので、ロールのコレクションを遅延初期化できませんでした:プロキシを初期化できませんでした-セッションがありません

  24. 24

    FluentNHibernate-子テーブルからの複合マッピング

  25. 25

    Spring Dataはロールのコレクションを遅延して初期化できませんでした、プロキシを初期化できませんでした-セッションがありません

  26. 26

    ロールのコレクションを遅延初期化できませんでした:User.authorities、プロキシを初期化できませんでした-セッションがありません

  27. 27

    ロールのコレクションを遅延初期化できませんでした:User.authorities、プロキシを初期化できませんでした-セッションがありません

  28. 28

    Hibernate-ロールのコレクションを遅延初期化できませんでした:プロキシを初期化できませんでした-セッションがありません

  29. 29

    ロールのコレクションを遅延初期化できませんでした:myapp.myapp.models.Contact.messages、プロキシを初期化できませんでした-セッションがありません

ホットタグ

アーカイブ