で結合されたテーブルの上にはどこを達成するために、私持っている私のデータベースに次の2つのテーブル:がどのようにEntity Frameworkを
[Schedule](
[Time] [datetime] NULL,
[ScheduleID] [bigint] IDENTITY(1,1) NOT NULL,
[PatientID] [varchar](20) NULL,
CONSTRAINT [PK_Schedule] PRIMARY KEY CLUSTERED
(
[ScheduleID] ASC
)
と:
[Patient](
[NameLast] [varchar](20) NOT NULL,
[NameMiddle] [varchar](20) NULL,
[NameFirst] [varchar](20) NOT NULL,
[DOB] [varchar](20) NULL,
[PatientID] [varchar](20) NOT NULL,
CONSTRAINT [PK_Patient] PRIMARY KEY CLUSTERED
(
[PatientID] ASC
)
そして、私は、次のSQLを達成したいです、 Entity FrameworkのLINQとメソッドを使用して除い:
select NameFirst, NameLast, DOB
from Patient
join Schedule on Schedule.PatientID = Patient.PatientID
where Schedule.Time < GETDATE()
は私が結合を作成する方法を知って、私のマッピングを使用して、そうcreati結合は問題ではありません。私はまた、私は問題ではないので、私は必要な日付機能を行う方法を知っています。私は(LINQのメソッドを使用して)実行する方法を知っておく必要があり
言う部分:where Schedule.Time < SOMETHING
は、ここで私が試したものだが、それは誤り投げた:それは私を与えた
var patients = context.Patient
.Include(x =>
x.Schedule.Where(y => y.Time < DateTime.Now)
);
エラーを「Includeパス式は、そのタイプで定義されているナビゲーションプロパティを参照する必要があります。
Entity Frameworkでlinqメソッドを使用すると、SQLのように結合テーブルで「Where」をどのように達成できますか?
context.Patients.Where(x => x.Schedules.Time == DateTime.Now);
Patient.Schedules
は1対多の関係であるため、Patient.Schedules
はコレクションなので、私はできません。
うわー、それは素晴らしいことです!なんらかの理由で、クエリをスワップして、スケジュールから開始するクエリは発生しませんでした。素晴らしい答え! –