我正试图找出如何检查我的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; }
}
HasLogo = (section.LogoFileID.HasValue) ? "Yes" : "No";
您使用的是一个可为null的int64类型,因此会公开一个HasValue属性,以提供您想要的内容。
可为null类型概述的文档:http://msdn.microsoft.com/en-us/library/1t3y8s4s.aspx
由于您的int64是可以为null的,我的首选项是检查null值。
HasLogo = (section.LogoFileId != null) ? "Yes" : "No";
更新:最初,这个答案表明,检查徽标属性是否为null是返回HasLogo值的另一种方式,正如Tim S.在下面的评论中指出的那样,这将导致对测试的每个部分进行DB调用。