0

SQL ServerデータベースにDateTimeという名前の日付と時刻を保存しています。私のマッピングにはDateTimeというプロパティがあります。私の質問では、個別に日付にアクセスする必要があります。私はそれを試してみましたが、それを得ることができないにもかかわらず、何をしたい、他のプロパティで時間を節約NHibernate QueryOverはdatetimeプロパティから時刻を取得します

Additional information: could not resolve property: TimeOfDay of: IWS.DataContracts.ServicesPlanning

ではありません:日付で、私は日時からの時間を取得しようとしたとき、私は、エラー、次の取得問題はないが、いずれかの作業。 QueryOver

クエリ:LINQと

Session.QueryOver<ServicesPlanning>() 
    .JoinAlias(x => x.TeamMember,() => stm) 
    .Where(() => stm.Id == _memberId) 
    .Where(x => (x.AllDay && (x.StartDate == _startDate && x.EndDate == _endDate)) || 
     (!x.AllDay && x.StartDate.Date == _startDate && x.EndDate.Date == _endDate 
       && (x.StartDate.TimeOfDay > _endTime.Value || x.EndDate.TimeOfDay < _startTime.Value))) 
    .RowCount() > 0; 

クエリ:クエリの

return Session 
     .Query<ServicesPlanning>() 
     .Where(x => x.TeamMember.Id == _memberId) 
     .Any(x => (x.AllDay && (x.StartDate.Date == _startDate && x.EndDate.Date == _endDate)) || 
     (!x.AllDay && x.StartDate.Date == _startDate && x.EndDate.Date == _endDate && (x.StartDate.TimeOfDay > _endTime.Value || x.EndDate.TimeOfDay < _startTime.Value))); 

目的:すでに私たちは重複していないこの日付や時刻とともに計画があるかどうかを確認。

ご協力いただきありがとうございます。

+0

てきましたあなたはQueryOverの代わりにLINQを試しましたか? –

+0

@PhilDegenhardtはい、同じエラーが発生しているようです。私は上記のLINQクエリを投稿します。 –

答えて

1

データベースの内容を比較するのではなく、パラメータを調整するのはなぜですか?

データベースは日付としてたとえば2016-01-01T08:00:00のために含まれている、とあなたは2016-01-01の日付を持つレコードを照会したい場合は時間に関わらず、あなたは2016-01-01T00:00:002016-01-01T23:59:59「間」の日付を照会することができ、そのような:

.Where(x => (x.AllDay && (x.StartDate == _startDate && x.EndDate == _endDate)) || 
    (!x.AllDay && x.StartDate >= _startDate.Date && x.StartDate < _startDate.Date.AddDays(1))... 
+0

私はこれを、NHは現在の唯一の選択肢だと思う。 NHはDateTime.TimeOfDayプロパティをSQL同等のものに変換する方法を伝える必要があります。 – hometoast

+0

しかし問題は私が時間をチェックすることです。そのカレンダーは簡単なので、私は2つのイベントを同時に行うことはできません。 –

関連する問題