检查EF6型号的属性,看它是否有值?

时间:2013-12-12 19:52:41

标签: c# asp.net-mvc-5 entity-framework-6

我试图弄清楚如何检查我的EF 6模型的属性,看它是否包含值。该属性是一个INt64,所以我不能使用string.Empty,我不能只将它与一个空字符串进行比较而不转换它。如果“LogoFileID”中没有值,如何修改此检查以便返回“否”?

HasLogo = (section.LogoFileID != string.Empty) ? "Yes" : "No";

这是我的模特

public class Section
{
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public Int16 ID { get; set; }

    public Int64? LogoFileID { get; set; }

    [Required, MaxLength(250), Column(TypeName = "varchar")]
    public string RouteName { get; set; }

    [Required, MaxLength(15), Column(TypeName = "varchar")]
    public string Type { get; set; }

    [Required]
    public string Title { get; set; }

    public string Synopsis { get; set; }

    [ForeignKey("LogoFileID")]
    public virtual File Logo { get; set; }
}

2 个答案:

答案 0 :(得分:4)

HasLogo = (section.LogoFileID.HasValue) ? "Yes" : "No";

您正在使用可以为null的int64类型,因此会公开HasValue属性,为您提供所需的内容。

可空类型概述的文档:http://msdn.microsoft.com/en-us/library/1t3y8s4s.aspx

答案 1 :(得分:1)

由于你的int64可以为空,我的首选是检查空值。

HasLogo = (section.LogoFileId != null) ? "Yes" : "No";

<强>更新 最初这个答案建议检查logo属性是否为null是另一种返回HasLogo值的方法,正如Tim S.在下面的评论中指出的那样,这将导致对每个测试部分进行数据库调用。