2016-09-29 19 views
0

linq文で2つのテーブルを結合しようとしていて、親に「管理者契約モデル」を添付した 'Administrator Model'モデル。エンティティまたは複合型 'AdministratorModel'をLINQ to Entitiesクエリで構築できません

Dim response = (From a In db.Administrators 
        Join ac In db.AdministratorContracts 
          On a.NDE_Staff_ID Equals ac.NDE_Staff_ID 
        Order By a.LastName, a.FirstName 
        Select New AdministratorModel With { 
         .NDE_Staff_ID = a.NDE_Staff_ID, 
         .FirstName = a.FirstName, 
         .LastName = a.LastName, 
         .Contract = New AdministratorContractModel With { 
              .AdministratorContractsID = ac.AdministratorContractsID, 
              .NDE_Staff_ID = ac.NDE_Staff_ID, 
              .NDE_Number = ac.NDE_Number, 
              .ForYear = ac.ForYear, 
              .Contract = ac.Contract, 
              .ContractDays = ac.ContractDays, 
              .Salary = ac.Salary, 
              .Salary_AddComp = ac.Salary_AddComp, 
              .Salary_Benefits = ac.Salary_Benefits, 
              .Experience_System = ac.Experience_System, 
              .Experience_Total = ac.Experience_Total, 
              .EducationAttained = ac.EducationAttained, 
              .BenefitsExplanation = ac.BenefitsExplanation, 
              .AddCompExplanation = ac.AddCompExplanation}}) 
+0

私も運でこれを試してみました.... '薄暗い応答を=(db.Administratorsで からa.NDE_Staff_IDでdb.AdministratorContracts で交流に参加しa.LastNameすることによりac.NDE_Staff_ID 注文を等しいです{ .NDE_Staff_ID = a.NDE_Staff_ID、 .FirstName = a.FirstName、 .LastName = a.LastName、 .Contract = AC})で、a.FirstName 選択新しいAdministratorModel ' – Jason

答えて

0

問題はLinqToEntitiesは、SQLにクエリを変換しようとしているということですが、あなたのモデルタイプ(これらはデータベースの種類と同じではないと仮定)については何も知りません。

種類を作成しようとする前にクエリを列挙した場合は、機能するはずです。 OrderBy()の後とSelect()の前にToList()を呼び出してみてください。これにより、データベースタイプのメモリ内データセットが作成され、データベースから切り離され、残りのコードが機能します。

フィルタ処理を行う場合は、ToList()を呼び出す前にこれを行う必要があることに注意してください。これにより、メモリ内データセットのサイズが小さくなります。

関連する問題