2011-12-15 6 views
-1

SQLクエリー(文字列クエリ)を実行できません エラーメッセージ: データリーダーには複数のフィールドがあります。複数のフィールドは、EDMプリミティブ型には有効ではありません。 それはどうですか?エンティティフレームワーク - dbcontextデータベースsqlquery SQLiteで複数のテーブルを結合する

Department class code here: 
public class Department 
{ 
    [Key] 
    public Int64 DepartmentID { get; set; } 
    public string DepartmentName { get; set; } 
    public Int64 P_ID { get; set; } 
} 
Person class code here: 
public class PersonInfo  
{  
    [Key] 
    public Int64 P_ID { get; set; } 
    public string PersonName { get; set; } 
    public string Register_Num { get; set; } 
} 

using (var db = new EntityContext()) 
     { 
      try 
      { 
       int result = 0; 
       string query = @" 
        SELECT P.P_ID, D.DepartmentName FROM PersonInfo AS P 
        INNER JOIN Department AS D ON P.P_ID = D.P_ID"; 

       var exists = db.Database 
       .SqlQuery<Department>(query).ToList(); 

       foreach (var item in exists) 
       { 
        MessageBox.Show(string.Format("{0}", item)); 
       }      
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show(ex.InnerException.InnerException.Message); 
      } 
     } 
+3

ここでの質問は何ですか? – Eranga

+0

Departmentクラスをどのように定義しましたか?あなたがdb.Database.SqlQueryを完了した場合(クエリ)私はこれを理解するだろうが、あなたがオブジェクトを使用しているので、これは本当に興味深い – kmp

答えて

1

結果セットをDepartment Modelクラスにマップしようとしているので、SQLクエリでdepartmentidも返す必要があります。すべての列名は、あなたの部門クラスのプロパティと正確に一致する必要があります。

関連する問題