0

私は答えを探してみましたが、私の質問はどこかで答えられていると確信していますが、答えを得ることができませんでした. 独立しているが関連している 2 つのテーブルがあります。私はEFで自分のクラスを扱っています。C# でモデルを作成したいのですが、1 対多の関係はありません。コードでそれを行うにはどうすればよいですか? 以下は私の2つのモデルです:

public class adult
{
        [Key]
    public int ID { get; set; }
    [StringLength(50, ErrorMessage = "{0} cannot exceed {1} characters")]
    public string LastName { get; set; }
    public string Initials { get; set; }
    public string Title { get; set;}
    public string Address1 {get; set;}
    public string Address2 {get; set;} 
 }

以下は、多くの「子」を持つ 2 番目のモデルです。

 public class children
{
    [Key]
    public int childNo { get; set; }
    public string favourite { get; set; }
    **public int childID { get; set; }**

    [Required]
    [StringLength(50, ErrorMessage = "{0} cannot exceed {1} characters")]
    public string colour { get; set; }
    public DateTime DateReceived { get; set; }
    public DateTime DatePaid { get; set; }
}

私は、なしまたは 1 対多の関係に興味があります。つまり、子供がいなくても大人になることができます。children クラスの childID は、adult クラスの ID に対応します。children クラスの多くの childID と一致するクラスの ID がないか、1 つしかありません。クラスでこれをモデル化するにはどうすればよいですか? これらのマップされた値を 1 つのビューに表示し、変更を編集、作成、保存することにも関心があります。

4

2 に答える 2

0

その答えは、Entity Framework コードは、最初に何らかのコーディングだけで、1 対 1、1 対多、多対多などの関係を自分自身で作成するということです。また、仮想プロパティを使用すると、2 つのモデル間を移動できるため、最初のモデルに次のコードを追加します。

public virtual ICollection<children> children_{ get; set;}

次に、2 番目のモデルにこれを追加します。

[Required]
public virtual adult adult_{ get; set;}

これは、子供と大人の間の 1 対多の関係を表します。[必須] どの子にも確実に親 (大人) が存在することを保証するため、null にすることはできません。現在のモデルに他のモデルのリレーショナル ID を追加する必要がないことに注意してください。したがって、コードのこの部分を使用することは一般的に使用されません。

public int childID {get; set;}

上記のコードを 2nd モデルで使用する場合、DB にナビゲーションが表示されません。コントローラーに手動でマウントし、コントローラーのようなコードでテーブルをナビゲートする必要があります。ただし、仮想プロパティを使用することにより、EF はモデル間をナビゲートするためにこのようなリレーション キーを生成します。 EFによって自動的に作成されたテーブル。

于 2012-11-15T10:50:32.497 に答える
0

メンバーを呼び出すのと同じくらい簡単です。たとえば、どの子供が特定の大人に関連しているかを知りたい場合は、次のようなコードを使用できます。

var childno = db.adult.child.ChildNo;

または検索用:

string favor = db.adult.child.Find(input.id).Select(s => s.favourite).ToString();

child モデルは現在 adult のメンバーであり、大人は child の ICollection にいくつかの子を持つことができます。

于 2012-11-15T14:03:14.117 に答える