0

私は3つのクラスを持っています:

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 };
4

1 に答える 1

0

このマッピングを試してください。これが私の 1 対 1 の関係の様子です。

public class WorkMap : ClassMap<WorkEntity>
{
    public WorkMap()
    {
        Id(x => x.WorkId).Column("ID_ZLECENIE").GeneratedBy.Sequence("SEQ_TAE_ZLECENIE");
        HasOne(x => x.OrderExtension)
            .Cascade.All();
     }
}

public class OrderExtensionMap : ClassMap<OrderExtensionEntity>
{
    public OrderExtensionMap()
    {
        LazyLoad();

        Id(x => x.Id).Column("ID_ZLECENIE").GeneratedBy.Foreign("Work");
        HasOne(x => x.Work).Constrained();
        HasMany(x => x.IssueInformation).KeyColumn("FK_ZLECENIE");
    }
}
于 2012-12-05T13:30:15.513 に答える