年齢を検索していますが、私の問題を解決できませんでした。 私は本当の初心者なので、私はEFについてあまり知らないので、私は非常に多くの解決策を試しましたが、正しい道を得ることができませんでした。EntityFrameworkでNativeQueryの複数のテーブルを使用
私はEntityFramework6で作業しています。 、
- 従業員(社員、BadgeNumber、姓、姓、...)
- シフト(ShiftId、たstartDate、endDateに、ShiftTypeId)
- TypeShift(TypeShiftId、説明、startHour: は、私は4つのテーブルを持っていますendHour)
- カチカチ(TickId、TickingDate)
私は期間ともdislpay従業員と「カチカチ日付」の関連するシフト内のすべてのTickingsをリストする必要があります。従業員とシフトの関係は、多対多関係です。 DBで生成されたブリッジテーブルは 'EmployeeShift'
最初はLINQでやってみましたが、失敗しました。 とIネイティブSQLクエリをwirtingになってしまった(クエリがテストされ、それが働いている)ウィッヒは次のとおりです。
public List<Object> getTickings(DateTime fromDate, DateTime toDate)
{
try
{
var tickingList= model.Database
.SqlQuery<Object>("select distinct Employees.numBadge, Employees.EmployeeId, Employees.firstName, Employees.lastName, Tickings.TickingId, Tickings.tickingDate, TypeShifts.description, Shifts.startDate, Shifts.endDate, TypeShifts.startHour, TypeShifts.endHour
from Tickings, Employees, Shifts, TypeShifts, EmployeeShift
where Employees.EmployeeId= Tickings.EmployeeId
and Tickings.TickingDate <= '" + toDate+ "'
and Tickings.TickingDate >= '" + fromDate+ "'
and Employees.EmployeeId= EmployeeShift.employees_EmployeeId
and EmployeeShift.shifts_ShiftId = shifts_ShiftId
and Tickings.TickingDate <= Shifts.endDate
and Tickings.TickingDate >= Shifts.startDate").ToList<Object>();
return tickingList;
}
catch
{
return null;
}
}
は今、私は複数のテーブルを持っているので、異なるオブジェクト。 'List'の代わりに 'List'を追加すると、返されるリストはnullではなく、リストにアクセスできません。私は何かが欠けていると確信しています。 質問は次のとおりです。ネイティブクエリで動作させるにはどうすればよいですか?またはLINQ
ありがとうございました。それは有り難いです。
よろしくお願いいたします。
SELECT Employees.numBadge、Employees.EmployeeId、Employees.firstName、Employees.lastName、Tickings.TickingId、Tickings.tickingDate、TypeShifts.description、Shifts.startDate、Shiftsの列に対応するプロパティを持つ 'MyResult'クラスを作成します。 .endDate、TypeShifts.startHour、TypeShifts.endHour Tickings、Employees、Shifts、TypeShifts、EmployeeShift'このクラスを使用する.SqlQuery '... –
Serg
回答ありがとう – Ghita