Jak powinno się implementować Domain Model wraz z ORM.?
Dużo robi się krzyku o to że setery są be bo "naruszają" enkapsulacje.
Tylko, że nikt nigdy nie mówi o konkretnym bugu, w tej konkretnej sytuacji.
Prosty przykład Encji (bez sensu ale mniejsza o to)
public class Order : IValidation
{
private string _orederAmount;
public virtual int Id { get; protected set; }
public virtual string OrederAmount
{
get => _orederAmount;
protected set => _orederAmount = value;
}
public ValidationResult ValidationResult { get; private set; }
public bool IsValid
{
get
{
var fiscal = new OrderIsValidValidation();
ValidationResult = fiscal.Valid(this);
return ValidationResult.IsValid;
}
}
public decimal Profit(decimal tax)
{
var amount = _orederAmount;
//....
}
}
Potem w serwisie mapuje na to tabele Order za pomocą Nhibernate. Co można zarzucić takiemu podejściu?
Spotkałem się z opinią że tak nie wolno, że Presistance dla ORM powinno być oddzielnym bytem a Domain Model To taki adapter na te presistance.
No więc pytam.
IsValid
powinno zawsze zwracaćtrue
, więc jaki w ogóle sens tego propertisa?IsValid
.