1

私は 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 を介して何をする必要がありますか、またはモデルをどのように変更する必要がありますか?

4

2 に答える 2

0
public class Book
{
    public int BookID { get; set; }
    public string Name { get; set; }

    public virtual ICollection<BookRecommendation> BookRecommendations { get; set; }

}

public class BookRecommendation
{
    public int BookRecommendationID { get; set; }
    public int BookID { get; set; } 
    public string remarks { get; set; } //Some recommendation text

    public virtual Book Book { get; set; }

}

私はこれが問題を解決するはずだと思います!それは本の実体とそれのための推薦のコレクションを作ります。つまり、1つの本には多くの推奨事項を含めることができ、推奨事項は1つの本にのみ属します。書籍を作成して推奨事項を書き込もうとすると、「BookID」に書籍の名前が記載されたドロップダウンボックスが表示されます。

于 2012-07-17T08:10:15.083 に答える