2

ツール:のVisual Studio 2010の
言語:私はEntity Frameworkのを習い始めている C#"EntityCollectionは既に初期化されています。"エラー

私はそれが正常に動作しますが、私は使用するたびにコード#1を使用whenver、私は、問題でこだわっていますと、InvalidOperationExceptionがユーザーコードで未処理だった
エラーメッセージ:CODE#2、私はエラー(下記掲載)

タイトルを取得します"EntityCollectionは既に初期化されています。 InitializeRelatedCollection方法は、オブジェクトグラフの逆シリアル化中に新しいEntityCollectionを初期化するために呼び出されるべき「

//SchoolModel.Designer.cs 
public EntityCollection<Course> Courses 
{ 
    get 
    { //Blah blah code } 
    set 
    { 
     if ((value != null)) 
     {//Below statement is pointed by Visual Studio as Exception Thrower 
      ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedCollection<Course>("SchoolModel.CourseInstructor", "Course", value); 
     } 
    } 
} 

コード#1:

List<string> list = new List<string>(); 
var prs = new Person(); 
using (var myEntity = new SchoolEntities()) 
{ 
    var result = myEntity.People; 
    foreach (var ppl in result) 
    { 
     list.Add(ppl.PersonID+","+ppl.FirstMidName); 
    } 
} 

コード#2:

List<string> list = new List<string>(); 
List<Person> prsList = new List<Person>();//when using this list,problem started 
var prs = new Person(); 
using (var myEntity = new SchoolEntities()) 
{ 
    var result = myEntity.People; 
    foreach (var ppl in result) 
    { 
     list.Add(ppl.PersonID+","+ppl.FirstMidName); 

     //New code which raised exceptions 
     prs.PersonID = ppl.PersonID; 
     prs.FirstMidName = ppl.FirstMidName; 
     prs.LastName = ppl.LastName; 
     prs.Courses = ppl.Courses; 
     prsList.Add(prs); 
     //New code end 
    } 
} 

データベースダイアグラム:
Database Diagram from tutorial

エンティティ・ダイアグラム:
enter image description here

PS:私は、その後、http://www.asp.net/web-forms/tutorials/getting-started-with-ef/the-entity-framework-and-aspnet-getting-started-part-3でEFのチュートリアルに従っずれと一緒にプレイし始め

  • それ:
  • 関連するエラーに関する質問がありましたが、私のシナリオは異なります。
+0

私はEFからのCRUD操作にもっと興味があります(プロジェクトには最小限の時間ですばやく実装する必要があります)。詳しくは十分な時間がありません –

+1

別のスレッドでコンテキストを再利用していますか?コンテキストはスレッドセーフではありません。 –

+0

@AkashKava私はちょうど学んでいるので、私はどんなスレッドも使用していません。 –

答えて

3

あなたは、EntityCollectionを設定するべきではありません。コレクションは既に(例外ごとに)初期化されています。 AddCourseインスタンスで変更するだけです。

+0

私は//prs.Courses = pplをコメントアウトしました。コース;それは私が人々のコース情報をピックアップしたい場合は、私が何をすべき、コースはナビゲーションプロパティで、作業を開始し? –

+0

1はすでに:)それを拾いました。私は 'ppl.Courses'にはコースがあると思います。ループを繰り返して、コースのコピーを 'prs.Courses'に追加することができます。 –

+1

:)適切な応答のための –

0

あなたは、foreachループの内側にPRSの初期化を移動することで試すことができます。あなたがprs.Courses = ppl.Coursesで行うよう

+0

私がチェック質問を以下にしようとしている学習サンプルASp.net 4.0 Webフォームであります"prs"オブジェクトはちょっと一時的なオブジェクトです –

関連する問題