NHibernate Mapping Null Object / Special Case Pattern - PullRequest
5 голосов
/ 01 мая 2009

Я хотел бы иметь объект 'UnassignedDepartment' вместо того, чтобы позволить сотрудникам иметь нулевой отдел:

public class UnassignedDepartment : Department
{
    public UnassignedDepartment() : base("not yet assigned") {
        Id = -99; <-- just some Id that can be held constant, not be generated..
    }
}

Это доступно через статическое удобное поле в классе Отдел:

public class Department : Entity
{
    public static readonly Department UNASSIGNED = new UnassignedDepartment();

    ....    
} 

Я использую фреймворк S # rpArch в качестве базового объекта, со смесью автоматического преобразования, переопределений и соглашений FNH С точки зрения настойчивости кажется логичным сохранить это с другими департаментами со «специальным» Id, но я не знаю, как это сделать правильно. Пожалуйста, просветите меня!

Thx, Berryl

1 Ответ

2 голосов
/ 01 мая 2009

Я не понимаю, чего вы пытаетесь достичь, но, возможно, это поможет. Отобразить отдел как частное поле в Employee и вернуть UnassignedDepartment, если он нулевой.

private Department _department; // map this in FNH

public Department Department
{
    get { return _department ?? _department.UNASSIGNED; }
}
...