实体框架5.0。我的查询有什么问题?

时间:2013-03-12 14:01:22

标签: c# linq entity-framework

这是我的代码:

public DateTime GibSomeStartDate(IEnumerable<int> partnerNumbers, DateTime startTime)
{
     var contractsStartDate = from contract in this.databaseContext.Contract
                              where partnerNumbers.Contains(contract.Pnr) 
                                 && contract.SomeDateTime >= startTime
                              select contract.SomeDateTime;
}

如果我调用contractsStartDate.Min(),则会发生异常:

Unable to create a null constant value of type 'System.Collections.Generic.IEnumerable`1'. Only entity types, enumeration types or primitive types are supported in this context.

我的查询有什么问题?

  • contractsStartDate属于类型 System.Data.Entity.Infrastructure.DbQuery

  • EF 5.0

  • databaseContextSystem.Data.Entity.DbContext

  • 的孩子

1 个答案:

答案 0 :(得分:3)

我知道这个错误。只需确保partnerNumbers不为空。您为此参数传递了一个空值,但Linq-to-entities无法将该值转换为任何有意义的值。

if (partnerNumbers == null)
{
    throw new ArgumentNullException("partnerNumbers");
}

额外的奖励建议:

如果SomeDateTimenot nullable并且您的枚举中没有条目,那么您将在调用Min()时遇到异常。在查询中将SomeDateTime转换为nullable类型将起作用,然后在没有条目时变为null。