私は EF Code First が大好きですが、SQL でテーブルを定義する方が簡単な場合もあります。
この場合、次のような 2 つのモデルがあります。
public class Book
{
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<BookRecommendation> BookRecommendations { get; set; }
// additional properties about the item
}
public class BookRecommendation
{
public int Id { get; set; }
// public int BookId { get; set; } // from attempts to use data annotations
public virtual Book Book { get; set; }
// public int BookRecommendedId { get; set; } // from attempts to use data annotations
public virtual Book BookRecommended { get; set; }
// additional properties about the relationship between the two items
}
残念ながら、これをデータ注釈または流暢な API で正しく動作させることはできません。
複数の外部キーが Entity Framework 4.1 コードで最初に同じテーブルを指している、Entity Framework 4.1 InverseProperty Attribute and ForeignKeyなどの質問がありますが、これらは両端でコレクションを含む傾向があります。
私のモデルは単に間違っている可能性があります。早い段階でフラストレーションが溜まり、SQL でこれを行う方法を考えたからです。
Book
Id
Name
// other properties
Recommendation
Id
BookId
RecommendedBookId
// other properties
と の間に外部キーがBook.Id : Recommendation.BookId
ありBook.Id : Recommendation.RecommendedBookId
ます。
これを機能させるには、データ注釈または流暢な API を介して何をする必要がありますか、またはモデルをどのように変更する必要がありますか?