【问题标题】:Multiple Entity Mapping (Not using IDicitionary)--FluentNHibernate多实体映射(不使用 IDicitionary)--FluentNHibernate
【发布时间】:2014-11-02 02:47:40
【问题描述】:

这是我的班级结构

public class Group
{
   public virtual int GroupId {get;set;}

   public virtual IDictionary<Resource, Permission> ResourcePermissions { get; set; }
}

public class Resource
{
   public virtual int ResourceId {get;set;}
}

public class Permission
{
   public virtual int PermissionId {get;set;}
}

这是我的默认组覆盖类

public class GroupMappingOverride : IAutoMappingOverride<Group>
{
    public void Override(AutoMapping<Group> mapping)
    {
        mapping.HasManyToMany(x => x.ResourcePermissions)
        .Table("GroupResourcePermission")
        .AsEntityMap("ResourceID", "PermissionID");


    }

}

当我执行时,它正在创建一个表 GroupResourcePermission,其中列 [GroupID,ResourceID,PermissionID] 与(GroupID 和 ResourceID)作为组合主键。

就我的目的而言,它行不通。我想将数据存储为 [1,1,1], [1,1,2] 但当前结构不允许我以该格式存储。我发现有人在推荐

  IList<Tuple<Resource,Permission>> 

但无法让它工作。

请各位高手给点建议

【问题讨论】:

    标签: nhibernate fluent-nhibernate fluent-nhibernate-mapping


    【解决方案1】:

    个人/强烈建议不要使用IDictionary&lt;T, V&gt;many-to-many 之类的映射。虽然这是可能的,但您稍后会遇到如何查询此类关系的问题...

    我会介绍配对对象

    public class Setting
    {
       public virtual int SettingId {get;set;}
       public virtual Group Group {get;set;}
       public virtual Resource Resource {get;set;}
       public virtual Permission Permission {get;set;}
    }
    

    组将是:

    public class Group
    {
       public virtual int GroupId {get;set;}
       public virtual IList<Settings> Settomgs { get; set; }
    }
    

    Group 的设置集合的映射

    HasMany(x => x.Settings)
        .Table("GroupResourcePermission")
        .KeyColumn("GroupID")
        .Cascade.AllDeleteOrphan()
        .Inverse()
        ;
    

    Setting 映射就像

    public class SettingMap : ClassMap<Setting>
    {
        public SettingMap()
        {
            References(x => x.Group);
            References(x => x.Resource);
            References(x => x.Permission);
        }
    }
    

    这种映射稍后将支持通过其IList&lt;Setting&gt; Settings 的任何资源或权限过滤组

    请也看看这个问答:

    【讨论】:

      猜你喜欢
      • 2010-12-13
      • 2011-08-25
      • 1970-01-01
      • 1970-01-01
      • 2012-03-14
      • 2023-04-09
      • 2012-04-14
      • 2011-07-07
      • 1970-01-01
      相关资源
      最近更新 更多