2010-12-20 3 views
2

ちょうどNHibernateのを始めとだから私はちょうどそれに基づいて要求を取得しようとしている次のモデルNhibernateの処理方法の違いは何ですか?FirstOrDefaultと.SingleOrDefault?可能性のあるバグ?

public class Request 
{ 
    public virtual Guid Id { get; set; } 
    public virtual State {get;set;} 
} 
public class State 
{ 
    public virtual Guid Id {get;set;} 
} 

でNhib 3.0の(3.0.0.2001)のLINQを使用してステータスIDです。

_session.Query<Request>().Where(x => x.State.Id==someGuidValue).FirstOrDefault(); 

はかなりまっすぐ進むようだが、それは@ P0パラメータが欠落しているように見えるところそれはここに含まれwhy'dわからないけれども、これは、生成されたSQLに基づいて、SQLエラーを取得します。

しかし
{"Line 1: Incorrect syntax near '('."} 
select TOP (@p0) requ0_.Id as Id0_ 
, requ0_.State_id as State8_0_ 
from [Request] requ0_ where [email protected] ] 
    Name:p1 - Value:a2e63925-6628-4786-a621-9e5200d5ab71 

、うまく、SingleOrDefault作品を使用しました。

_session.Query<Request>().Where(x => x.State.Id==someGuidValue).SingleOrDefault(); 

いずれの洞察も認められます。ありがとう

答えて

1

私はSingleOrDefaultが複数のレコードがあなたの選択基準を満たしていると間違いますと信じています。返されるレコードの数にかかわらず、FirstOrDefaultが最初に取り出されます。

これは、LINQ-To-SQLでの動作です。

関連する問題