0

従来のOracleデータベースで流暢なnhibernateを使用し、DevartEntityDeveloperを使用してマッピングとエンティティクラスを生成しています。

私はベーステーブルProductを持っています。これには、Tourを含むいくつかのサブクラスがあります。Tourを保存するとき、nhibernateはPK固有の制約に違反する2つの同一の挿入をProductテーブルに発行します。

製品マッピングは次のとおりです。

public class ProductMap : ClassMap<Product>
{
    public ProductMap()
    {
        Schema("CT_PRODUCTS");
        Table("PRODUCT");
        OptimisticLock.None();
        LazyLoad();
        CompositeId()
            .KeyProperty(x => x.Season, set =>
            {
                set.Type("CT.DomainKernel.Enums.Season,CT.DomainKernel");
                set.ColumnName("SEASON");
                set.Access.Property();
            })
            .KeyProperty(x => x.ProductCode, set =>
            {
                set.ColumnName("PROD_CODE");
                set.Length(10);
                set.Access.Property();
            });
        Map(x => x.Name)
            .Column("NAME")
            .Access.Property()
            .Generated.Never()
            .CustomSqlType("VARCHAR2")
            .Length(200);
        HasOne(x => x.Tour)
            .Class<Tour>()
            .Access.Property()
            .Cascade.SaveUpdate()
            .LazyLoad();
    }
}

ツアーマッピングは次のとおりです。

public class TourMap : SubclassMap<Tour>
{
    public TourMap()
    {
        Schema("CT_PRODUCTS");
        Table("TOUR");
        LazyLoad();
        KeyColumn("SEASON");
        KeyColumn("PROD_CODE");
        Map(x => x.Duration)
            .Column("DURATION")
            .Access.Property()
            .Generated.Never()
            .CustomSqlType("NUMBER")
            .Not.Nullable()
            .Precision(3);
        HasOne(x => x.Product)
            .Class<Product>()
            .Access.Property()
            .Cascade.SaveUpdate()
            .LazyLoad()
            .Constrained();
    }
}

ツアーエンティティクラス:

public partial class Tour2 : Product
{
    public virtual Product Product
    {
        get
        {
            return this._Product;
        }
        set
        {
            this._Product = value;
        }
    }
}

何がうまくいかないかについてのアイデアはありますか?

4

1 に答える 1

0

これに対する解決策は、Tour から Product へ、および Product から Tour への Property 参照を削除することでした。

于 2012-08-20T00:37:55.627 に答える