私は2つのクラスを持っています
public class ProgramObject
{
public virtual long Id { get; set; }
public virtual string Name { get; set; }
public virtual Commisioning planCommisioning { get; set; }
public virtual Commisioning factCommisioning { get; set; }
}
public class Commisioning
{
public virtual long Id { get; set; }
public virtual decimal? FirstQuarter { get; set; }
public virtual ProgramObject planCommisioningRef { get; set; }
public virtual ProgramObject factCommisioningRef { get; set; }
}
およびマップクラス
public class ProgramObjectMap : ClassMap<ProgramObject>
{
public ProgramObjectMap()
{
Table("Ipo_ProgramObject");
Id(x => x.Id).GeneratedBy.Increment();
Map(x => x.SuplyOrgName).Column("SuplyOrgName");
References(x => x.factPowerCommisioning).Column("factCommisioningID");
References(x => x.planPowerCommisioning).Column("planCommisioningID");
}
}
public class CommisioningMap : ClassMap<Commisioning>
{
public CommisioningMap()
{
Table("Ipo_Commisioning");
Id(x => x.Id).GeneratedBy.Increment();
Map(x => x.FirstQuarter).Column("FirstQuarter");
HasOne(x => x.factCommisioningRef)
.Cascade.All();
HasOne(x => x.planCommisioningRef)
.Cascade.All();
}
}
コミットしようとすると、「オブジェクトは保存されていない一時的なインスタンスを参照しています」という例外があります。マッピングで何が間違っていますか?
オブジェクトを保存するには、次のコードを使用します。
private static void Save(SessionManager sManager, ProgramObject ProgramObject, IpoConversions conversions)
{
sManager.OpenSession();
var currSession = sManager.CurrentSession;
using (ITransaction tx = currSession.BeginTransaction())
{
currSession.Save(ProgramObject);
tx.Commit();
}
}
マッピングの問題だと思います。