Я хочу написать класс C # для описания таблицы базы данных с отношением к себе, позже для использования с Entity Framework 6.
У меня есть следующий код C # для реализации показанной выше таблицы:
public class Contact
{
/// <summary>
/// Unique identifier of the contact.
/// </summary>
public string ContactId { get; set; }
/// <summary>
/// Gets or sets the name of the contact.
/// </summary>
public string Name { get; set; }
/// <summary>
/// Defines whether the contact belongs to another contact (e.g.,
/// parents, organization).
/// </summary>
public virtual Contact BelongsToContact { get; set; }
}
Теперь я хочу пометить BelongsToContact
как Nullable
, так как это свойство не требуется.Могут быть некоторые контакты, которые принадлежат другим контактам, но есть также контакты, которые вообще не принадлежат ни одному контакту.Поле должно быть обнуляемым.
Чтобы пометить BelongsToContact
как обнуляемое, я изменил свойство с типа Contact
на Contact?
(это более короткая форма Nullable<Contact>
).
public virtual Contact? BelongsToContact { get; set; }
Теперь я получаю следующую ошибку:
Ошибка CS0453 Тип «Контакт» должен иметь тип значения, не допускающий значения NULL, чтобы использовать его в качестве параметра «T» в универсальном типе.или метод 'Nullable'
Итак: Как правильно пометить свойство как необязательное / обнуляемое? Наиболее общий способ (без разметки Entity Framework 6, когда это возможно).