2012-04-21 7 views
0

外部キーを別の名前に関連付けるにはどうすればいいですか:投稿でが作成され、ユーザーIDユーザーテーブルに作成されます。Asp.net mvcエンティティフレームワークのコード最初に別の名前の外部キーを関連付けます

public class Post : IValidatableObject 
{ 
    [Key] 
    public long PostID { get; set; } 

    public long? ParentPostID { get; set; }  


    [ForeignKey("CreatedBy")] 
    public virtual User Users { get; set; } 

    [ScaffoldColumn(false)] 
    public DateTime? CreatedDate { get; set; } 

    [ScaffoldColumn(false)] 
    public long? CreatedBy { get; set; }  
} 

public class User 
{ 
    [Key] 
    public long UserID { get; set; } 

    [Required] 
    [MaxLength(20)] 
    [Display(Name = "User Name")] 
    public string UserName { get; set; } 
} 

答えて

0

あなたのマッピングが正しいか - 特に[ForeignKey("CreatedBy")]属性、あなたは何も変更する必要はありません。 Entity Frameworkの内の外部キー関係で

依存(= Post)とその外部キーが常に元本(= User)の主キーを参照する - と主キーはUserIDある - また、慣例により、あなたが持っているので、それをKey属性でマークしました。もう何も指定する必要はありません。

外部キーCreatedByがNULL可能(long?)なので、関係はオプションです(0..1対多)。したがって、どのユーザーによっても作成されていないポストがデータベースに存在する可能性があります。これが必要でない場合は、NULL値を許可しない外部キープロパティ(long CreatedBy)を使用して関係を作成することができます。