代码之家  ›  专栏  ›  技术社区  ›  Jørn Schou-Rode dscher

如何从NHibernate的“组名”列映射组实体类?

  •  0
  • Jørn Schou-Rode dscher  · 技术社区  · 16 年前

    我的数据库中有一个表,大致如下:

    create table Foo (
        Id             int identity       not null,
        Name           varchar(100)       not null,
        GroupName      varchar(100)       not null,
        constraint PK_Foo primary key (Id)
    )
    

    现在我想把这个表映射到两个实体类中,如下所示:

    class Foo {
        public virtual in Id { get; private set; }
        public virtual string Name { get; set; }
        public virtual Group Group { get; set; }
    }
    
    class FooGroup {
        public virtual string Name { get; set; }
        public virtual ISet<Foo> Foos { get; private set; }
    }
    

    也许我可以为 FooGroup

    1 回复  |  直到 16 年前
        1
  •  0
  •   John Rayner    16 年前

    class RawFooData 
    {
        public virtual in Id { get; private set; }
        public virtual string Name { get; set; }
        public virtual string GroupName { get; set; }
    }
    

    IEnumerable<FooGroup> groups = allRawFooData.Select(data => data.GroupName)
                                            .Distinct()
                                            .Select(name => new FooGroup() 
                                                            {
                                                               Name = name
                                                            });
    
    foreach(var group in groups)
    {
        group.Foos = allRawFooData.Where(data => data.GroupName == group.Name);
    }