私はしばらくの間この質問を延期してきましたが、今は常に私を悩ませています。テーブルをwinformsコントロールで正しくバインドする方法はありますか?
sealed class Repository<T> : IRepository<T> where T :class
{
public IList<T> Items { get; private set; }
public void Load()
{
Items.Clear();
var session = SessionHelper.GetSession();
session.Clear();
using (var tx = session.BeginTransaction())
{
var list = session.Query<T>().ToList();
foreach (var obj in list)
{
Items.Add((T)session.Merge(obj));
}
session.Clear();
tx.Commit();
}
}
//more
}
と私はそれをバインドするWinフォームで:私はこれでレジ係をロード
class Cashier
{
int Id {get; set;}
string name{get; set;}
IList<Site> Sites {get; set;}
}
class Site
{
int Id{get; set;}
string name {get; set;}
Cashier Cashier {get; set;}
}
: - 私は2クラス(。私は簡潔にするためpublic
とvirtual
を残してこれらのクラスはautomappedされている)を持っていますこのようなのBindingSource:
cashierBindingSource.DataSource = Cashiers;
私はコンボボックスのデータソースとしてこののBindingSourceを設定して、私はこれを除いてアプリケーションを実行し、コンボボックスをクリックしてくださいイオンは、私にスローされます。
が初期化[HRProject.Model.Cashier#1]なまけ役割のコレクションを初期化する-failed:セッションまたはセッションが閉じられた無HRProject.Model.Cashier.Sitesを、
は、私は多くのそのようなクラスを持っていると私はこれを成し遂げるためにクリーンな方法があります感覚を得る、マッピングのオーバーライドを提供することが、この問題
mapping.HasMany(x => x.Sites).Not.LazyLoad().Cascade.All();
を修正することがわかりました。何か案は?
DisplayMemberとValueMemberとは何ですか? – clearpath