2

ManyToMany マッピングに問題があります。これは私が持っているものです:

public class Asset
{
    public virtual int id {get;set;}
    //other props
    public virtual IList<Tag> Tags { get; set; }
}

public class Tag
{
    public virtual int Id { get; set; }
    public virtual string Description { get; set; }
    public virtual string Slug { get; set; }
}

単方向の多対多のマッピング

public class AssetMap : IAutoMappingOverride<Asset>
{

    public void Override(AutoMapping<Asset> mapping)
    {
        mapping.HasManyToMany(x => x.Tags)
        .Table("AssetTag")
        .ParentKeyColumn("AssetId")
        .ChildKeyColumn("TagId")
        .Cascade.SaveUpdate();
    }
}

私の最初の質問は: マッピングは正しいですか?

この時点で:

var asset = new Asset
    {
         //props
    };

asset.Tags.Add(new Tag{...});
repository.Save(asset)

タグを挿入しますが、真ん中のテーブル「AssetTag」には何も挿入しません

var asset = new Asset
    {
         //props
    };

asset.Tags.Add(existing TAG);
repository.Save(asset)

アセットは挿入されますが、中央のテーブル「AssetTag」には挿入されません

助けてくれてありがとう、ダン

4

1 に答える 1

0

マッピングは正しいです。

私はほぼ同じ構造、同じマッピング、NHibernate 3.3.1.4000、SQL Server 2005 を使用していますが、正常に動作します。唯一の違いは、マスター オブジェクトのコンストラクターでリストを初期化していることです。また、NH がスキーマを作成できるようにしています。関係表。

于 2012-08-13T12:29:04.397 に答える