2017-06-09 16 views
1

私は(ADO.netエンティティデータモデルによって生成された)私のSQLテーブルを表す2つのクラスの下にあります。読み取りデータ

public partial class Parent 
{ 
    public Parent() 
    { 
     this.Students = new HashSet<Student>(); 
    } 

    public int Parent_Id { get; set; } 
    public string Parent1_Last_Name { get; set; } 
    public string Parent1_First_Name { get; set; } 
    public virtual ICollection<Student> Students { get; set; } 
} 

public partial class Student 
{ 
     public int Student_Id { get; set; } 
     public string Student_Last_Name { get; set; } 
     public string Student_First_Name { get; set; } 
     public int Parent_Id { get; set; } 
     public virtual Parent Parent { get; set; } 
} 

今、私がしようとしています私はParentテーブルからの読み取り時に、私は、ランタイム「無効なキャスト」例外エラーを取得しています

var parent = new Parent(); 
var students = new List<Student>(); 

using (var dc = new SchoolDataEntities()) 
{ 
    students = dc.Students.Where(s => s.Parent_Id.Equals(parentId)).ToList(); 
    parent = dc.Parents.Where(p => p.Parent_Id.Equals(parentId)); 
    parent.Students = students;  
} 

Students表が正常に動作している):以下のような方法で私のテーブルからデータを読み込みます。

Error: System.InvalidCastException: 'Unable to cast object of type 'System.Data.Entity.Infrastructure.DbQuery`1[SchoolApplication.Parent]' to type 'SchoolApplication.Parent'.'

誰かが間違っていたことを教えてください。

+0

あなたはFirstOrDefault() 'または' dc.Parents.Where(p => p.Parent_Id.Equals(parentId))。SingleOrDefault()は、dc.Parents.Where(p => p.Parent_Id.Equals(parentId) ) '。 –

答えて

0

この部分はあなたの問題です:

parent = (Parent)dc.Parents.Where(p => p.Parent_Id.Equals(parentId)); 

親のコレクションだけではなく、単一の親である「」の出力。

この場合、「場所」ではなく「単一」または「最初」を使用できます。

0

コードのこの部分はIQueryableコレクションの代わりに、単一Parentモデルを返します。このため

parent = dc.Parents.Where(p => p.Parent_Id.Equals(parentId)); 

を、あなたはFirstOrDefault()SingleOrDefault()のいずれかでParentモデルにクエリを実体化する必要があります。

parent = dc.Parents.Where(p => p.Parent_Id.Equals(parentId)).FirstOrDefault(); 

parent = dc.Parents.Where(p => p.Parent_Id.Equals(parentId)).SingleOrDefault(); 

関連:Unable to cast object of type 'System.Data.Entity.Infrastructure.DbQuery`1[]' using linq lambda expression

関連する問題