0

私はEFを初めて使用し、連絡先情報を含むメインテーブルInvestorsと、投資家ごとに多くのメモを持つことができるテーブルNotesとの間の関係を設定する方法を理解するのに苦労しています。モデルは次のとおりです。

public class Investor
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Company { get; set; }
    public string Email { get; set; }
    public string Phone { get; set; }
    public string Cell { get; set; }
    public string Fax { get; set; }
    [Display(Name="Address 1")]
    public string Address1 { get; set; }
    [Display(Name = "Address 2")]
    public string Address2 { get; set; }
    public string City { get; set; }
    [StringLength(2, ErrorMessage = "State must be 2 characters")]
    public string State { get; set; }
    public string Zip { get; set; }
    public string ContactTableId { get; set; }
    [ForeignKey("ContactTableId, ContactId")]
    public virtual List<Note> Notes { get; set; }
}

public class Note
{
    [Key]
    [Column(Order = 0)]
    public string ContactTableId { get; set; }
    [Key]
    [Column(Order = 1)]
    public int? ContactId { get; set; }
    public string note { get; set; }
    public DateTime? DateCreated { get; set; }
}

上記のようにこれを設定しようとすると、「関係制約内の従属ロールとプリンシパル ロールのプロパティの数は同じでなければなりません」というエラーが生成されました。声明について:

public ActionResult Index()
{
    return View(db.Investors.ToList());
}

コントローラーで。ノートを自動的にプルするように設定するにはどうすればよいですか。

4

1 に答える 1

0

外部キーは "ContactTableId, ContactId" ではなくInvestor_Id、テーブルNote(またはメモ) 内の単一のフィールドです。EF は、1 つのキーを 2 つのフィールドにマップしようとしていると考えており、このやや捉えどころのない例外メッセージをコイン化しています。ただし、属性を削除するだけでForeignKey、EF は で外部キー フィールドを使用しますNote

于 2013-01-24T22:59:44.100 に答える