Моделирование отношений от одного до нуля или одного (Z-кардинальность)

Я изо всех сил пытаюсь найти лучший способ смоделировать отношения 1: 0,1 («может иметь один» или «имеет максимум один»). Я считаю, что это называется Z кардинальности.

Например, предположим, у меня есть два классаWidget а такжеWidgetTest, Не все виджеты проверены, и этот тест разрушительный, поэтому на каждый виджет может быть не более одного виджета. Также предположим, что неуместно добавлять поля WidgetTest в Widget.

Я хотел бы, чтобы мой публичный интерфейс был:

Widget
    WidgetTest { get; set; }

WidgetTest
    Widget { get; }

Модель 1: Widget имеет свойство WidgetTest, а в базе данных таблица Widget имеет уникально ограниченный внешний ключ WidgetTest. Мой администратор БД утверждает, что это позволило бы существовать записи WidgetTest без виджета.

WidgetTable
    WidgetTestId (FK, UQ)

Модель 2: Widget имеет частную коллекцию WidgetTest и применяет отношение 0,1, добавляя или удаляя отдельный объект из коллекции, управляемой общедоступным свойством WidgetTest. База данных моделирует это как 1: m с WidgetTest, имеющим уникальный ограниченный внешний ключ для Widget. Я утверждаю, что это означает принятие модели в соответствии со схемой базы данных (то есть больше работы для меня).

WidgetTestTable
    WidgetId (FK, UQ)

Какая модель лучше? Чего легче достичь с помощью NHibernate? Или есть третий путь?

Редактировать ... Вот что я закончил:

public class Widget
{
    // This is mapped in NH using a access strategy
    private IList<WidgetTest> _widgetTests = new List<WidgetTest>(1);

    public WidgetTest
    {
        get { return _widgetTests.FirstOrDefault(); }
        set
        {
            _widgetTests.Clear();
            if (value != null)
            {
                _widgetTests.Add(value);
            }
         }
     }
}

Ответы на вопрос(4)

Ваш ответ на вопрос