このコードを実行すると、List メソッドによって Developer がフラッシュされます。私はこれが起こることを望んでいません。
Developer developer = null;
IEnumerable<Language> languages = null;
using (var session = this.SessionFactory.OpenSession())
using (var trx = session.BeginTransaction())
{
developer = session.Get<Developer>(id);
languages = session.CreateCriteria<Language>().List<Language>();
}
using
言語が最初に取得されるように内部の行を入れ替えると、開発者はフラッシュされません。でも、よほどの理由がない限り、覚えておく必要はありません。
マッピングを変更する必要がありますか? 現在の外観は次のとおりです。
class DeveloperMap : ClassMap<Developer>
{
public DeveloperMap()
{
Table("Developers");
Id(x => x.Id).GeneratedBy.Identity();
Map(x => x.FirstName);
Map(x => x.LastName);
References(x => x.FavoriteLanguage).Cascade.None();
HasManyToMany(x => x.AssignedProjects)
.Cascade.None()
.Table("DevelopersProjects")
.FetchType.Join();
}
}
念のため、Developer クラスもあります。
public class Developer
{
public virtual int? Id { get; set; }
public virtual string FirstName { get; set; }
public virtual string LastName { get; set; }
public virtual Language FavoriteLanguage { get; set; }
public virtual IList<Project> AssignedProjects { get; protected internal set; }
}