5

これは私のコードです:

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

  • databaseContextの子ですSystem.Data.Entity.DbContext

4

1 に答える 1

3

私はこのエラーを知っています。partnerNumbersnullでないことを確認してください。このパラメーターにnull値を渡していますが、Linq-to-entitiesはその値を意味のあるものに変換できません。

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

追加のボーナスアドバイス:

であり、列挙にエントリがない場合SomeDateTimenot nullable、の呼び出しで例外が発生しますMin()SomeDateTimeクエリのタイプへのキャストnullableは機能し、エントリがない場合はnullになります。

于 2013-03-12T14:05:39.417 に答える