2011-08-09 3 views
1

にデータを取得するために失敗し、私の2 POCOSです:Entity Frameworkのここに起因する例外

[Table("Movie", Schema= "dbo")] 
public class Movie: BaseClass 
{ 
    public string TitleName { get; set; } 

    public virtual ICollection<Actor> Actor{ get; set; } 

} 

[Table("Actor", Schema="dbo")] 
public class Actor: BaseClass 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public DateTime? BirthDate { get; set; } 
} 

基本クラスのプロパティint型のIDを持っているだけのクラスです。

データベースには、多対多の関係テーブルとして動作するMovieActorテーブルを持つMovieテーブルとActorテーブルがあります。現在、私は特定の映画のすべての俳優を取得することに興味があります。 dbcontextが情報にアクセスしようとするたびしかし、私はこの例外を得続ける:

"InnerException = {"Invalid column name 'Movie_Id'.\r\nInvalid column name 'Movie_Id'.\r\nInvalid column name 'Movie_Id'."}" 

私は同様の問題のためのStackOverflowを検索し、彼らは外部キーを使用するように(他のユーザに)提案し、私は属性を作成しましたActorコレクションの前にあります。

[ForeignKey("Actor")] 

そして私は言い、別の例外を取得:

The ForeignKeyAttribute on property 'Actor' on type 
'Movie' is not valid. The foreign key name 
'Actor' was not found on the dependent type  
'Actor'. 
The Name value should be a comma separated list of foreign key property names. 

がここに誰もが前に、この問題全体に実行されましたの?

答えて

2

EF 4.1コード・ファースト規約はMovieとの間に1対多の関係を作成します。次のように

public string PrimaryCategoryCode { get; set; } 

public virtual Category PrimaryCategory { get; set; } 

これを示すために、PrimaryCategory 財産上のForeignKey属性を使用Actor。多対多の関係が必要な場合は、Fluent APIでこれを設定する必要があります。

+0

ああ、助けてくれてありがとう。 –

0

詳細については、thisポストを参照してください。私はそれがこれを行う方法を説明するのに役立つと思う。外部キー部分に移動するには、下にスクロールする必要があります。

外部キーを使用すると、モデルで公開されているかどうかがわかります。 「モデルで公開されています」とは、従属エンティティの プロパティが、 エンティティの値であることを意味します。以下のコードでは、プロパティPrimaryCategoryCodeは、 プライマリカテゴリの公開された外部キーです。

public string PrimaryCategoryCode { get; set; } 


[ForeignKey("PrimaryCategoryCode")] 
public virtual Category PrimaryCategory { get; set; } 
+0

Ahh私は多くの要件を逃しました。それが正しいとSlaumaの答えを参照してください。 – Jack

関連する問題