I need help mapping my design, I'm also open to suggestions for changing my design.
Objects
Employee has UserID(PK), Login, Password, Level(int)
Agent has UserID(PK), Login, Password, ParentAgentID, Prefix(string)
Client has UserID(PK), Login, Password, ParentAgentID, Balance (decimal)
C# .NET
Code:
public class User
{
public int UserID { get; set; }
public string LoginName { get; set; }
public string Password { get; set; }
}
public class ExternalUser : User
{
public int ParentAgentID { get; set; }
}
public class Agent : ExternalUser
{
public string Prefix { get; set; }
}
public class Client : ExternalUser
{
public decimal Balance { get; set; }
}
public class Employee : User
{
public int Level { get; set; }
}
Mapping file:
Code:
<class name="UserA">
<id name="UserID">
<generator class="native"/>
</id>
<property name="LoginName" />
<property name="Password" />
<joined-subclass name="Employee">
<key column="UserID"/>
<property name="Level" />
</joined-subclass>
<joined-subclass name="ExternalUser">
<key column="UserID"/>
<property name="ParentAgentID" />
<joined-subclass name="Agent">
<key column="UserID"/>
<property name="Prefix" />
</joined-subclass>
<joined-subclass name="Client">
<key column="UserID"/>
<property name="Balance" />
</joined-subclass>
</joined-subclass>
</class>
Does this seem right? I feel like I'm missing some basic things, but not sure.