0
У меня есть 3 класса:Fluent 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) можно получить всю информацию из таблиц , Но я не могу сохранить OrderExtensionEntity с помощью:
var orderExtension = new OrderExtension();
orderExtension._some_variables_like_strings_to_be_saved_
Session.SaveOrUpdate(orderExtension)
Это говорит мне «Нерешенные собственности Работа» и некоторые другие ошибки, если я пытаюсь сделать:
orderExtension.Work = new WorkEntity() { WorkId = 12345 };
Nope. Он выбрасывает «Транзакция, по которой выполнялся этот вызов метода, была асинхронно прервана». Может быть, я перехожу от «одного к одному» к «одному-ко-многим» и использую его как «Один»? –
Ну, я не уверен, что понимаю ваш пример выше. Похоже, вы пытаетесь самостоятельно сохранить OrderExtension. OrderExtension не может существовать без объекта Work. Если это не ваше намерение, отображение неверно. Я думаю, вы связали бы свой новый объект OrderExtension с новым рабочим объектом или постоянным рабочим объектом и сохранили бы объект Work. –
Ошибка, описанная выше «Операция ...», не похожа на проблему, связанную с отображением. –