次の POCO があります。
public class TrackToken
{
[Required, Key]
public int ID { get; set; }
[MaxLength( 500 )]
public string Comment { get; set; }
[Required]
public DateTime CreationTime { get; set; }
public virtual ICollection<TrackLog> Logs { get; set; }
}
public class TrackLog
{
[Required, Key]
public int ID { get; set; }
[Required]
public TrackToken Parent { get; set; }
[Required]
public DateTime Time { get; set; }
[Required]
public int ServerID { get; set; }
}
すべての TrackToken を返すことができる EF LINQ クエリを作成し、その TrackToken の最新の TrackLog と結合できるようにしたいと考えています。
次のようなコードを試しました:
TrackTokens
.Select( t => new
{
ID = t.ID,
Comment = t.Comment,
CreationTime = t.CreationTime,
RecentLog = t.Logs.OrderByDescending( l => l.Time ).FirstOrDefault(),
} );
しかし、クエリを実行する行のどこかで、私は得る
EntityCommandCompilationException: An error occurred while preparing the command definition. See the inner exception for details.
InnerException: NotSupportedException: Specified method is not supported.
これは、FirstOrDefault の使用に関連しているようです。
これに似たものも試しましたが、ServerID列を取得する方法がわかりません
TrackTokens
.Select( t => new
{
ID = t.ID,
Comment = t.Comment,
CreationTime = t.CreationTime,
LastSeen = t.Logs.Max( l => l.Time ),
LastServerID = // how do I get the ServerID column of the most recent record?
} );
この種の関係に対してクエリを実行するための頼りになる方法は何ですか?