我想编写一个C#类来描述与其自身有关系的数据库表,以后再与Entity Framework 6一起使用。
我具有以下C#代码来实现上述表格:
>>> board = [['']*3 for _ in range(3)]
>>> board[0][0] = "X"
>>> board
[['X', '', ''], ['', '', ''], ['', '', '']]
现在,我想将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>
现在,我收到以下错误消息:
错误CS0453类型“联系人”必须是不可为空的值类型,以便在通用类型或方法“可为空”中将其用作参数“ T”
因此:如何正确地将属性标记为可选/可为空?最通用的方式(可能时不使用Entity Framework 6标记)。
答案 0 :(得分:1)
您应该这样做
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>
[ForeignKey("BelongsToContact")]
public int? BelongsToContactId { get; set; }
public virtual Contact BelongsToContact { get; set; }
}