Следует ли разрешить объектам домена быть временно недействительными и как это решение повлияет на методы проверки?

Я пишу проект VB.NET Winforms на основе MVVM (с использованием привязки Winforms). Мой инстинкт - никогда не позволять объекту домена находиться в недопустимом состоянии. Это требует, чтобы я проверил валидацию в конструкторе для новых сущностей и в каждом установщике для существующих сущностей:

Public Class Product


    Public Sub New(ProductID as Integer, Name as String)

        If ProductID > 0 AndAlso Name.Length > 5 Then

            _ProductID = ProductID
            _Name = Name

        Else
            Throw New InvalidProductException
        End If
    End Sub

    Private _ProductID as Integer
    Public Property ProductID as Integer

        Set(value as String)

            If value > 0 then
                _ProductID = value
            Else
                Throw New InvalidProductException
            End If

        End Set

    End Property

    'Same principle as above for Name setter.


End Class

Затем я наткнулся на аннотации данных, которые показались мне довольно удобными. Я заметил, что большинство людей, использующих аннотации данных, позволяют объекту домена временно становиться недействительным, а затем проверяют объект позже с помощью вызова Validate.ValidateObject. К этому моменту объект недействителен, и исходное состояние потеряно, если у вас нет другого механизма для его отката.

Два вопроса:

1) Разрешаете ли вы объектам домена стать временно недействительными?

2 ) Основываясь на вашем ответе на первый вопрос, какие методы вы используете для проверки сущности?

7
задан Casey Wilkins 17 August 2011 в 13:39
поделиться