0

私は EF の新しい学習者です。いくつか質問があります。

1. たとえば、1対多で仮想が何を意味するのかわかりません。例を挙げます。1つの質問には、たとえば、多くのオプションがあります。

public class Question
{
    public int QuestionId { get; set; }
    public string Title { get; set; }
    public virtual List<Option> Options { get; set; }
}

public class Option
{
    public int OptionId { get; set; }
    public string OptionText { get; set; }
    public virtual Question Question { get; set; }
}

しかし、「2」仮想はどういう意味ですかvirtual。この行 の を削除するpublic virtual List<Option> Options { get; set; }と、違いが見つからなかったので、1対多としてうまく機能するので、2が何をvirtual意味するのかを非常に明確かつ簡単に説明してもらえますか?オーバーライドの場合、何をオーバーライドしますか?

2. API fluent をいつ使用する必要があるかわかりません。たとえば、前の 1 対多の例などです。流暢なAPIがなくても、それはまだ1対多の関係なので、いつ使用する必要があるか教えてください? たとえば、どのような場合に。

3. API fluent では、「withmany」と「hasmany」を一緒に知っています。これらは「多対多」を意味し、「withrequired? isoptional?」とは何ですか?

4

1 に答える 1

0

以下の点についてお答えできると思います。

  1. EF はすべてのナビゲーション プロパティ virtual を定義するため、EF は実行時に Brand クラスから派生した新しいクラス (動的プロキシ) を作成し、代わりにそれを使用します。この新しく動的に作成されたクラスには、初めてアクセスしたときにナビゲーション プロパティを読み込むロジックが含まれています。この機能は、遅延読み込み (より透過的な遅延読み込み) と呼ばれます。

詳しくは以下のリンクをご覧ください

Entity Framework 4.1 仮想プロパティ

2.流暢な API を使用する場合

Code First を使用する場合、ドメイン CLR クラスを定義してモデルを定義します。既定では、Entity Framework は Code First 規則を使用して、クラスをデータベース スキーマにマップします。Code First 命名規則を使用する場合、ほとんどの場合、Code First を使用して、クラスで定義した外部キ​​ーとナビゲーション プロパティに基づいてテーブル間の関係を設定できます。クラスを定義するときに規則に従わない場合、または規則の動作方法を変更したい場合は、流暢な API またはデータ注釈を使用してクラスを構成し、Code First がテーブル間の関係をマップできるようにすることができます。

http://msdn.microsoft.com/en-us/data/jj591620.aspx

3.次のリンクを参照して、.WithRequired および .WithOptional オプションとは何かを確認してください。

EF Fluent API で .WithRequired はどのような役割を果たしますか?

于 2013-05-29T10:24:51.530 に答える