2011-09-25 1 views
6

enter image description hereEntity Frameworkが存在しない列を取得しようとしています

データベースからVideoCollection項目を取得しようとしていますが、{"Invalid column name 'User_Id'."}を取得しようとしています - ブレークポイントを設定すると、EFがUser_Id列を選択しようとしていますが、Csオブジェクトまたはデータベーススキーマを使用します。 (それは別のテーブルに存在しますが、それは問題ではありません)。なぜこれが起こっているのかをデバッグするにはどうしますか?

答えて

9

VideoCollectionへの参照を持つUserクラスがありますか?そうであれば、おそらく2つの間の関係を明示的に定義する必要があります。つまり、EFはVideoCollectionに外部キーが含まれていると推測しているように見えますが、その関係を定義するUser_Idです。

+0

あなたはほとんどそこにいます - 私は仲介テーブルPurchasedCollectionsを持っています。これはUserIdとVideoCollectionId(両方とも外部キー)を持っています。関係を明示的に定義する必要がありますか?この仲介をCsオブジェクトとDbContextから削除しました(直接アクセスする必要はありません)。これは問題を引き起こしたでしょうか? – greenimpala

+2

@ st3テーブルの名前をUser_VideoCollectionsに変更するか、OnModelCreatingをオーバーライドして、明示的に接続を「PurchasedCollections」テーブルで確立する必要があります。 EF(コードファースト)規則では、直接FK関係またはエンティティの名前を使用した結合テーブルのいずれかが必要です。それを逸脱した場合は、接続方法を伝える必要があります。何か 'builder.Entity ().HasMany(u => u.Collections).WithRequired()。ToTable(" PurchasedCollections "); ' – tvanfosson

+0

これはうまくいきました。この命名規則で多対多の関係を宣言する必要があると言っていますか(明示的に関係を定義しない限り)? – greenimpala