2011-06-20 17 views
0

を働いていない私は、このEntity Frameworkのコードは、最初

class ClassA 
    { 
     public long classAID {get; set;} 
     public string Description {get; set;} 
     public IEnumerable<ClassB> ClassBs {get; set;} 

    } 

class ClassB 
    { 
     pubic long classBID {get; set;} 
     public string SomeOtherDescription {get; set;} 

     public IEnumerable<ClassA> {get; set;} 
    } 
class TestContext: DBContext 
    { 
     public DbSet<ClassA> ClassAs { get; set; } 
     public DbSet<ClassB> ClassBs { get; set; } 
    } 

Hのようなクラスは、クラスやプロパティと同じカラム名とテーブル名でDBを持っています。 私は必要に応じてweb.config設定を行っています。私は、データを取得するために、上記の使用しようとすると、私はエラーを取得

"System.Data.Edm.EdmEntityType: : EntityType 'ClassA' has no key defined. Define the key for this EntityType." 

"System.Data.Edm.EdmEntityType: : EntityType 'ClassB' has no key defined. Define the key for this EntityType." 

I、キー属性、外部キー属性などが、何も働いていた設定など疲れた複数のアプローチ。何が欠けているのか教えてください。

私はC#4を使用して、私は次のURLで確認している:あなたは、ナビゲーションプロパティはvirtualとしてマークされて見ることができるように

public class ClassA 
{ 
    public long ClassAID {get; set;} 
    public string Description {get; set;} 
    public virtual ICollection<ClassB> ClassBs {get; set;} 
} 

public class ClassB 
{ 
    public long ClassBID {get; set;} 
    public string SomeOtherDescription {get; set;} 
    public virtual ICollection<ClassA> {get; set;} 
} 

public class TestContext: DBContext 
{ 
    public DbSet<ClassA> ClassAs { get; set; } 
    public DbSet<ClassB> ClassBs { get; set; } 
} 


http://www.asp.net/mvc/tutorials/mvc-music-store-part-4

http://weblogs.asp.net/scottgu/archive/2010/07/16/code-first-development-with-entity-framework-4.aspx

+0

dbのテーブルには主キーが正しく定義されていますか? – pRimE

+0

はい主キーが定義されています。 classAIDとclassBIDはプライマリキーであり、tableBにはclassAIDというFKの属性があります – Amit

+0

投稿したコードが期待どおりに機能するので、別の場所で問題が発生するはずです。 –

答えて

0

はこれを使用してください。遅延ロード=ナビゲーションプロパティが最初にコードにプロパティにアクセスするときに個別に読み込まれるようになります。この方法でナビゲーションプロパティをロードするのは、データベースへの追加ラウンドトリップが発生するため、必ずしも最善の方法ではありません。そのため、EFはナビゲーションプロパティをロードするよう明示的にEFに指示する熱心なローディングを提供します。

var query = context.ClassAs.Include(c => ClassBs); 
+0

私は実際に上記の作業を得ることができませんでした。 :(私はEFのパワーツール(http://goo.gl/5NiuH)を使用して私のデータベースからクラスを生成しました。今すぐうまくいく – Amit

+0

あなたが試したコードとツールがあなたのために生成したコードの違いは何ですか? –