2013-12-12 1 views
0

Я пытаюсь выяснить, как проверить свойство моей модели EF 6, чтобы узнать, содержит ли оно значение или нет. Свойство является INt64, поэтому я не могу использовать string.Empty, и я не могу просто сравнить его с пустой строкой без ее преобразования. Как я могу изменить эту проверку, чтобы она вернула «Нет», если в «LogoFileID» нет значения?Проверка свойства модели EF6, чтобы узнать, имеет ли оно значение или нет?

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; } 
} 
+0

Еще одна вещь, которую вы должны изменить в приведенном выше примере, заключается в использовании 'string.IsNullOrEmpty (section.LogoFileID)', конечно, для замены строки. Таким образом, вам не нужно иметь отдельную нулевую проверку. – krillgar

ответ

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

Вы используете обнуляемого тип int64 поэтому свойство HasValue подвергается дает вам то, что вы хотите.

Документация для обзора обнуляемого Тип: http://msdn.microsoft.com/en-us/library/1t3y8s4s.aspx

1

Поскольку ваш int64 обнуляемым мое предпочтение было бы проверить на нулевое значение.

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

Update: Первоначально этот ответ предложил проверить свойство логотип нуль, был ли другой способ, чтобы вернуть значение HasLogo как указал Tim S. в комментариях ниже это приведет к БД для вызова каждый раздел протестирован.

+1

Я бы подумал, что проверка 'Logo' может сделать ненужный вызов БД (по одному для каждого раздела). –

+0

Проверено, что да, он выполняет другой вызов БД для каждого раздела. Изменит мой ответ, чтобы отразить это. –