2013-10-22 20 views
5

私は2つのモデルを持ち、外部キーの関係を作成したいと考えています。基本的には、各音符をユーザーに割り当てる必要があります。私は、新しいユーザーメモを追加しようとするとASP.NET MVC 4で外部キーを設定する

[Table("UserProfile")] 
public class UserProfile 
{ 
    [Key] 
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] 
    public int UserId { get; set; } 
    public string UserName { get; set; } 
    public string Email { get; set; } 
} 

[Table("UserNotes")] 
public class UserNotes 
{ 
    [Key] 
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] 
    public int NoteId { get; set; } 

    [ForeignKey("UserProfile")] 
    public virtual int UserId { get; set; } 

    public string Title { get; set; } 
    public string Content { get; set; } 
    public string Added { get; set; } 
    public DateTime? Edited { get; set; } 
} 

私が取得: 型「note.DO.Models.UserNotes」に関するForeignKeyAttributeプロパティの「ユーザーID」は有効ではありません。ナビゲーションプロパティ 'UserProfile'が依存型 'note.DO.Models.UserNotes'に見つかりませんでした。 Name値は、有効なナビゲーションプロパティ名である必要があります。

私は、同様の質問で見つかったものを含む多くの組み合わせを試しましたが、どれもうまくいきませんでした。

+0

これはasp.netと関係がありますか? –

答えて

15

これを試してみてください:

public virtual int UserId { get; set; } 

[ForeignKey("UserId")] 
public virtual UserProfile User { get; set; } 

この方法で、あなたは、ナビゲーションプロパティで外部キープロパティをペアリング。

編集:あなたも、このようにそれを書き込むことができます。

[ForeignKey("UserProfile")] 
public virtual int UserId { get; set; } 

public virtual UserProfile UserProfile { get; set; } 

これら2つのスニペットは、同じ結果を与えます。エラーメッセージに「UserProfile」プロパティが表示されない場合は、追加する必要があります。

+0

なぜ外部キーを宣言するときにvirtualキーワードを使用する必要がありますか?あなたはそれに答えることができますか? – ObedMarsh

関連する問題