2014-12-18 2 views
1

나는이 클래스는IList <string>을 NHIbernate 매핑 코드로 매핑하는 방법?

public class Users { 
    ... 
    public IList<string> Roles {get; set;} 
} 

내가 이처럼 보이는 DB 스키마에 매핑해야합니다 있습니다

CREATE TABLE Users (
    AppId NVARCHAR(255) NOT NULL, 
    ... 
    PRIMARY KEY (AppId) 
) 

CREATE TABLE UserRoles (
    AppId NVARCHAR(255) NOT NULL, 
    Role NVARCHAR(255) NOT NULL, 
    PRIMARY KEY (AppId, Role) 
) 

ALTER TABLE UserRoles ADD CONSTRAINT FK_UserRoles_Users FOREIGN KEY (AppId) REFERENCES Users 

어떻게받을 수 있나요 그 매핑 별 코드? 이것은 가까이 있지만 "역할"열,

public UsersMapping() 
{ 
    Id(x => x.AppId, m => m.Generator(Generators.Assigned)); 

    Bag(c => c.UserRoless, m => 
    { 
     m.Table("UserRoles"); 
     m.Inverse(false); 
     m.Lazy(CollectionLazy.NoLazy); 
     m.Key(k => 
     { 
     k.Columns(cm => cm.Name("AppId")); 
     k.ForeignKey("FK_UserRoles_Users"); 
     }); 
    }); 
} 

답변

1

당신은 아주 가까이 있었다 (NHibernate에 이름을 "ID"를) 잘못된 이름이 바로 요소 측 구성해야합니다

public UsersMapping() 
{ 
    Table("Users"); 
    Id(x => x.AppId, m => { 
     m.Generator(Generators.Assigned); 
     m.Column("AppId"); 
    }); 

    Bag(c => c.Roles, m => 
    { 
     m.Table("UserRoles"); 
     m.Inverse(false); 
     m.Lazy(CollectionLazy.NoLazy); 
     m.Key(k => 
     { 
      k.Columns(cm => cm.Name("AppId")); 
      k.ForeignKey("FK_UserRoles_Users"); 
     }); 
    }, m => { 
     // map the element part of the relationship: 
     m.Element(el => el.Column("Role")); 
    }); 
} 
+0

감사합니다, 그러나 그것은 또한 UserRoles 테이블에'id UNIQUEIDENTIFIER not null'을 생성합니다 ... – dstj