Я переписываю библиотеку C # на F #, в которой большинство классов отображаются один в один с таблицами базы данных (аналогично ActiveRecord). Я обдумываю, использовать ли записи или классы (может быть, даже DU?). В установщиках свойств имеется достаточное количество проверок для поддержки инвариантов. Как лучше всего смоделировать это в F #? Я не хочу, чтобы объект, который нарушает бизнес-логику, сохранялся в базе данных. Любые идеи приветствуются.
Несколько дополнительных мыслей ...
Лучше ли перенести инварианты во внешний класс «контроллера»? Исходя из C #, кажется неправильным разрешать объекту, который соответствует записи базы данных, содержать что-либо, что не может быть сохранено в базе данных. Я полагаю, потому что неудача раньше кажется лучше, чем неудача позже.