2013-05-15 5 views
0

У меня есть следующие модели:Entity Framework: поиск записей в базе данных с нулевыми столбцами

public class FactCache 
{ 
    public int ID { get; set; } 
    public DateTime MonthDate { get; set; } 
    public string AttributeKey { get; set; } 

    public decimal RawValue { get; set; } 
    public decimal ManDayValue { get; set; } 
    public decimal FTEValue { get; set; } 

    public int? InputResourceID { get; set; } 
    public int? PhaseID { get; set; } 

    public virtual InputResources InputResource { get; set; } 
    public virtual DimPhase Phase { get; set; } 
} 

Как вы можете видеть выше, InputResourceID и PhaseID являются обнуляемыми необязательными полями.

Я хочу написать запрос, чтобы найти первую запись для заданной даты и AttributeKey, где и PhaseID, и InputResourceID - null.

Я попытался следующий код:

FactCache fact = db.FactCache.FirstOrDefault(
    a => a.InputResourceID == null 
    && a.PhaseID == null 
    && a.MonthDate == monthDate 
    && a.AttributeKey == key); 

Однако, она возвращает пустой объект. Каков правильный способ написания вышеуказанного запроса?

Я проверил базу данных и действительно есть записи с нулевыми PhaseID и InputResourceID.

+1

Посмотрите [этот вопрос SO] (http://stackoverflow.com/questions/682429/how-can-i-query-for-null-values-in-entity-framework), какую версию EF вы используете? – Andomar

+2

Простите очевидный вопрос: он все равно возвращает null, если вы удалите чеки «MonthDate» и «AttributeKey»? –

+0

@SteveWilkes: Да, проблема сохраняется – Chopo87

ответ

1

Не уверен, но, возможно ...

FactCache fact = db.FactCache.FirstOrDefault(
    a => false == a.InputResourceID.HasValue 
    && false == a.PhaseID.HasValue 
    && a.MonthDate == monthDate 
    && a.AttributeKey == key); 
+0

Да, похоже на работу. Еще хотелось бы использовать родной C# 'null', но похоже, что мне придется подождать, пока моя команда решит, что мы можем перейти на EF5. благодаря – Chopo87

Смежные вопросы