数据注释中的实体框架HasOptional

时间:2013-07-24 09:29:04

标签: c# entity-framework-5

如何在下面的代码中将对象VirtualTerminal设为可选?我是否必须删除VirtualTerminal并仅使用VirtualTerminalId?

[Table("Computer")]
public    class Computer :Device
{
    //public int Id { get; set; }
    public string OperatingSystem { get; set; }
    public string OS_LicenseKey { get; set; }
    public VirtualTerminal VirtualTerminal { get; set; }
    public int? VirtualTerminalId { get; set; }       
}

1 个答案:

答案 0 :(得分:3)

显式指定可选关系应该是不必要的。实体框架约定应检测VirtualTerminalId作为关系的外键,或者您可以在VirtualTerminal导航属性上使用ForeignKey数据注释:

[ForeignKey("VirtualTerminalId")]
public VirtualTerminal VirtualTerminal { get; set; }

由于VirtualTerminalId可以为空,因此Entity Framework会将该关系注册为可选。

有很好的解释herehere