次の linq to entities クエリがあります。コンパイルには適しているように見えますが、コードを実行すると次のエラーが発生します。そして、EDM モデルから派生したオブジェクトのリストを持つ非常に複雑なオブジェクトを取得したいと考えています。以下のクラスのリストは、EDM モデルから直接作成されたものではありませんが、問題をさらに複雑にするために EDM から派生したクラスです。エラーメッセージは次のとおりです。このクエリを解決するのを手伝ってください。必要なすべてのデータを 1 つの linq クエリで取得する必要があります。これは、リードが私に求めているものであり、コンポーネントごとに 1 つのクエリがあり、それらを追加していました。しかし、リードは 1 つのクエリでそれを望んでいます。リンクやコードスニペット、または提案をお願いします。
LINQ to Entities はメソッド 'System.Collections.Generic.List`1[LNI.WSAW.External.StayAtWork.EmployerAddress] ToList[EmployerAddress](System.Collections.Generic.IEnumerable`1[LNI.WSAW.External. StayAtWork.EmployerAddress])' メソッドであり、このメソッドはストア式に変換できません。
コードは次のとおりです。
Dim _requestrecord = (From r In Context.Requests.Include("Claims").Include("Employers").Include("EmployerContacts")
r.RequestId = RequestId AndAlso r.ManualClaimFlag = ManualClaim
c.ClaimId が c.ClaimId と等しい場合の Context.Claims で c.ClaimNo.Equals(ClaimNumber) を結合します。
Join e In Context.Employers On r.Employer.EmployerId Equals e.EmployerId Where e.EmplAccntNo.Equals(EmployerAccountNumber)
Context.EmployerContacts で ec に参加 r.EmployerContactId Equals ec.EmployerContactId Where ec.SawGuid.Equals(EmployerContactGuid)
{ _ で New RequestRecord() を選択
.Addresses = (In Context.EmployerAddressTypes から
Context.EmployerAddresses で ea に参加 at.AddressTypeId Equals ea.EmployerAddressType.AddressTypeId ea.EmployerId = r.Employer.EmployerId
{ _ で新しい External.StayAtWork.EmployerAddress() を選択します
.AddressLn1 = ea.AddressLn1,
.AddressLn2 = ea.AddressLn2,
.AddressLn3 = ea.AddressLn3,
.AddressType = at.Description,
.BusLocAddressId = ea.BuslocId,
.City = ea.City,
.Country = ea.Country,
.NewSwAddress = ea.NewSwAddressFlag,
.State = ea.St,
.Zip = ea.Zip、
.ZipExt = ea.ZipExt
}).ToList(),
.Employer = New EmployerBaisc() With { _
.EmployerId = e.EmployerId,
.EmployerName = e.EmplName
}、
.Expenses = (Context.TransactionDates の td から td.RequestId = RequestId
ex.TransactionDateId が td.TransactionDateId と等しい場合に Context.ExpenseTransactions で ex に参加
{ _ で新しい External.StayAtWork.RequestExpense() を選択します
.ExpenseAmount = ex.ExpenseAmount,
.ExpenseDate = ex.TransactionDate.TransactionDt.ToString(),
.ExpenseItem = ex.ExpenseItem,
.ExpenseReason = ex.ExpenseReason,
.ExpenseType = ex.ExpenseSubTypeId
}).ToList(),
.Wages = (Context.TransactionDates の td から td.RequestId = RequestId
wt.TransactionDateId が td.TransactionDateId と等しい場合に Context.WageTransactions で wt を結合します。
{ _ で新しい External.StayAtWork.RequestWage() を選択します
.DailyWage = wt.DailyWagePaidAmount,
.WorkDate = wt.TransactionDate.TransactionDt.ToString(),
.WorkHours = wt.WorkHours.ToString()
}).ToList(),
.Timeloss = (Context.ClaimTimelosses の ctl から
Context.Claims で clms に参加します。
{ _ で新しい External.StayAtWork.ClaimTimeLoss() を選択します
.ClaimNo = ctl.Claim.ClaimNo,
.FromDate = ctl.FromDt.ToString(),
.ToDate = ctl.ToDt.ToString()
}).ToList(),
.Files = (Context.RequestFiles の rfs から
Context.Requests で reqs に参加 rfs.RequestId に等しい reqs.RequestId ここで、reqs.RequestId = RequestId
{ _ で New FileBasic() を選択
.FileId = rfs.RequestFileId,
.FileName = rfs.FileName,
.FromDiv = rfs.FromDiv
}).ToList(),
.UiSettings = (ruis In Context.RequestUis から
ruis.RequestId の Context.Requests で reqs を結合 reqs.RequestId と等しい reqs.RequestId = RequestId
{ _ で新しい External.StayAtWork.RequestUI() を選択します
.ApfByFax = ruis.ApfByFaxFlag,
.ApfByMail = ruis.ApfByMailFlag,
.ApfLniHas = ruis.ApfLniHasFlag,
.ExpenseByFax = ruis.ExpenseByFaxFlag,
.ExpenseByMail = ruis.ExpenseByMailFlag,
.ExpenseLniHas = ruis.ExpenseLniHasFlag,
.JobByFax = ruis.JobByFaxFlag,
.JobByLni = ruis.JobByLniFlag,
.JobByMail = ruis.JobByMailFlag,
.LastDiv = ruis.LastDiv,
.requestId = ruis.RequestId,
.WageByFax = ruis.WageByFaxFlag,
.WageByMail = ruis.WageByMailFlag,
.WageLniHas = ruis.WageLniHasFlag
}).FirstOrDefault(),
.Request = New RequestBasic() With { _
.RequestId = リクエスト ID、
.Comments = r.Comments,
.InjuredWorkerName = c.WorkerName,
.IsFixedSalary = r.FixedSalaryFlag,
.IsGraveyard = r.GraveyardFlag,
.IsManualClaim = r.ManualClaimFlag,
.JobDescriptBeforeInjury = r.JobDescriptBefore,
.JobDescriptLightDuty = r.JobDescriptLightduty,
.TrackHoursFlag = r.HoursTrackedFlag
}
}).FirstOrDefault()
Response.ResultData = _requestrecord
そして、ここに私が取得しなければならないクラスがあります:
Public クラス RequestRecord
<DataMember()>
Public Property Request As RequestBasic
<DataMember()>
Public Property Employer As EmployerBaisc
<DataMember()>
Public Property Addresses As List(Of EmployerAddress)
<DataMember()>
Public Property Timeloss As List(Of ClaimTimeLoss)
<DataMember()>
Public Property Wages As List(Of RequestWage)
<DataMember()>
Public Property Exspenses As List(Of RequestExpense)
<DataMember()>
Public Property Files As List(Of FileBasic)
<DataMember()>
Public Property PaidDates As List(Of PaidDate)
<DataMember()>
Public Property UiSettings As RequestUI
End Class
前もって感謝します。