这是我的代码:

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的子代
  • 最佳答案

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

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

    额外的奖励建议:

    如果SomeDateTimenot nullable,并且枚举中没有任何条目,则在调用Min()时会出现异常。在您的查询中将SomeDateTime转换为nullable类型将起作用,然后在没有条目时您将为null。

    关于c# - Entity Framework 5.0。我的查询有什么问题?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15363337/

    10-10 23:58