1

私は単純な一対多の関係を持っています

public class Product
{
    public virtual Guid Id { get; set; }
    public virtual string Name { get; set; }
    public virtual string Category { get; set; }
    public virtual bool Discontinued { get; set; }
    public virtual IList<ProductCampaignTargeting> Targetings { get; set; }   
}

public class ProductCampaignTargeting
{
    public virtual Guid ID { get; set; }

    public virtual int TargetType { get; set; }

    public virtual string TargetValue { get; set; }

    public virtual Product Product { get; set; }
 }

マッピングあり:

class ProductCampaignTargetingMap : ClassMap<ProductCampaignTargeting>
{
    public ProductCampaignTargetingMap()
    {
        Table("campaign_targetings");
        Id(x => x.ID).GeneratedBy.Guid();

        Map(x => x.TargetType).Column("target_type");
        Map(x => x.TargetValue).Column("target_value");

        References(x => x.Product).Column("campaign_id_fk");
    }
}

class ProductMap: ClassMap<Product>
{
    public ProductMap()
    {
        Table("Product");
        Id(x => x.Id).Column("id").GeneratedBy.Guid();

        Map(x => x.Name).Column("Name");
        Map(x => x.Category);
        // check why inverse doens't work

        HasMany(x =>         x.Targetings).KeyColumn("campaign_id_fk").Cascade.AllDeleteOrphan().AsBag();
    }
}

そしてそれは機能しています-しかし、子(多くの)テーブルは2つのコマンドで更新されます-挿入してから更新しますそれを1つのコマンドに変更したい場合は、Inverse()オプションを使用します-しかし、外部キーはnullとして入力されます私はここに行方不明ですか?

4

1 に答える 1