1

我有一个ManyToMany映射的问题。这是我有:FluentNHibernate单向多对多关联

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”

感谢您的帮助, 丹

回答

0

映射是正确的。

我使用几乎完全相同的结构,相同的映射,NHibernate的3.3.1.4000,SQL Server 2005,它工作正常。唯一的区别是我正在初始化主对象的构造函数中的列表。我也允许NH创建模式,包括。关系表。