Frage

Ich schaffe das Sicherheitssystem für die Software im Erstellen und ich würde gerne wissen, wie ich die folgenden in NHibernate tun kann (wenn überhaupt möglich)

Benutzerkontenklasse:

public class UserAccount
{
    public virtual int UserID { get; set; }
    public virtual String Username { get; set; }
    public virtual Privilege InvoicePrivilege { get; set; }
    public virtual Privilege TradePrivilege { get; set; }
}

Berechtigungsklasse:

public class Privilege
{
    public virtual bool Read { get; set; }
    public virtual bool Write { get; set; }
    public virtual bool Delete { get; set; }
    public virtual bool Modify { get; set; }
}

werde ich eine große Anzahl dieser Berechtigungsobjekte, die sein (eine für jede gehandelte Einheit) so in der Datenbank i die folgenden Tabellen haben:

Useraccounts ( Benutzer-ID , Benutzername)
Privilegien ( Benutzer-ID, PrivilegeType , Lesen, Schreiben, Ändern, Löschen)

Wie kann ich die InvoicePrivielge Eigenschaft aus dem Benutzerkonto der Karte (UserID, 'Rechnung') Privilege.

Ich kann dies mit many-to-one tun, aber ich mag nicht, eine Sammlung von Privilegien, ich würde es eher Karte seine Eigenschaft.

War es hilfreich?

Lösung

Ich denke, eine Möglichkeit, dies zu tun ist, zwei Unterklassen der Privilege-Klasse zu erstellen:

public class InvoicePrivilege : Privilege 
{
}
public class TradePrivilege : Privilege
{
}

und die Diskriminator Spalte und Wert gesetzt. In fließend Mapping:

public class PrivilegeMap : ClassMap<Privilege>
{
  public PrivilegeMap()
  { 
     // ...
     DiscriminateSubClassesOnColumn("PrivilegeType")
       .SubClass<InvoicePrivilege>("Invoice", x => x.Map( ... ))
       .SubClass<TradePrivilege>("Trade", x => x.Map( ...));
  }
}

und verwenden Sie die Unterklassen in der UserAccount

public virtual InvoicePrivilege InvoicePrivilege { get; set; }
public virtual TradePrivilege TradePrivilege { get; set; }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top