0
我有3類:流利NHibernate的一對一保存
public class WorkEntity
{
public virtual int WorkId { get; set; }
public virtual OrderExtensionEntity OrderExtension { get; set; }
}
public class OrderExtensionEntity
{
public virtual int Id { get; set; }
public virtual WorkEntity Work { get; set; }
public virtual IList<IssueInformation> Issues { get; set; }
}
public class IssueInformationEntity
{
public virtual int Id { get; set; }
public virtual long WorkId { get; set; }
}
它們被映射:
public class WorkMap : ClassMap<WorkEntity>
{
public WorkMap()
{
Id(x => x.WorkId).Column("ID_ZLECENIE").GeneratedBy.Sequence("SEQ_TAE_ZLECENIE");
HasOne(x => x.OrderExtension).Constrained();
}
}
public class OrderExtensionMap : ClassMap<OrderExtensionEntity>
{
public OrderExtensionMap()
{
LazyLoad();
Id(x => x.Id).Column("ID_ZLECENIE").GeneratedBy.Foreign("Work");
HasMany(x => x.IssueInformation).KeyColumn("FK_ZLECENIE");
}
}
public class IssueInformationMap : ClassMap<IssueInformationEntity>
{
public IssueInformationMap()
{
Id(x => x.Id).Column("ID_ZAD_ROZ_ADRES").GeneratedBy.Sequence("SEQ_ZAD_ROZ_ADRES");
Map(x => x.WorkId).Column("FK_ZLECENIE").Not.Nullable();
}
}
當我的數據庫(Oracle)的上創建記錄我可以從表中的所有信息。如果我嘗試做
var orderExtension = new OrderExtension();
orderExtension._some_variables_like_strings_to_be_saved_
Session.SaveOrUpdate(orderExtension)
它告訴我「未解決物業工作」和其他一些錯誤:: 但我不能救OrderExtensionEntity使用
orderExtension.Work = new WorkEntity() { WorkId = 12345 };
不是。它拋出「執行此方法調用的事務異步中止。」也許我從One-to-One變成One-To-Many並且像One一樣使用它? –
嗯,我不確定我是否理解你的例子。它看起來像你試圖自己保存OrderExtension。沒有工作對象的情況下OrderExtension不能存在。如果這不是你的意圖,那麼映射是不正確的。我想你會將新的OrderExtension對象鏈接到新的Work對象或持久的Work對象並保存Work對象。 –
此外,您在上面的「交易...」錯誤似乎不是一個映射相關的問題。 –