2

本当の達人への簡単な質問。nhib でコレクションをマップする方法を理解するのに多くの時間を費やしました。コードによるマッピングで、質問があります。なぜ私のマッピングはタイプのコレクションで機能し、では機能IListしないのListですか?

これがコードです

public class Account {
    private IList<Term> Terms; // When I use List it does not work
    public Account()
    {
       Terms = new List<Terms>(); 
    }
    public virtual IList<Term> Terms // When I use List it does not work
    {
       get { return _Terms; }
       set 
       { if (_Terms == value) return;
           _Terms = value;
       }
    }
}

AccountMap.cs (1 つのアカウントには多くの用語があります)

Bag(x => x.Terms,
         m =>{},
         x => x.OneToMany()
);
4

2 に答える 2

2

ドキュメントには次のように書かれています:6.1。永続的なコレクション:

NHibernate では、永続的なコレクション値フィールドをインターフェース型として宣言する必要があります

サポートされているインターフェースのリスト:

実際 の インターフェイスは 、、、、、、、、 Iesi.Collections.ISet_ System.Collections.ICollection_ System.Collections.IList_ System.Collections.IDictionarySystem.Collections.Generic.ICollection<T>System.Collections.Generic.IList<T>System.Collections.Generic.IDictionary<K, V>Iesi.Collections.Generic.ISet<T>

または...何でも好きです!(「好きなもの」とは、の実装を作成する必要があることを意味しますNHibernate.UserType.IUserCollectionType。)

于 2013-01-12T18:32:50.077 に答える
0

NHibernate は IList と IList<T> (およびその他のコレクション インターフェイス タイプ) で動作します。これは、NHibernate が変更などを追跡するために内部的にこれらのインターフェイスの独自の実装を使用するためです。

ドメイン クラスでの具体的なコレクションの実装ではなく、コレクション インターフェイスの型を公開することは、オブジェクト設計の観点からも適切です。

于 2013-01-12T17:58:21.167 に答える