2017-01-16 8 views
0

Entity Frameworkにフィールドと呼ばれるものを指示する方法はありますか?Entity Frameworkでフィールド名を設定する

この例では、Studentテーブルを作成するときに、の列名を使用してAuthorフィールドを作成します。一例として、

namespace Student.Models 
{ 
    public class Student: ViewModelBase 
    { 
     [Key(), Column("StudentId", Order = 10)] 
     public int StudentId { get; set; } 

     [Column("Description", Order = 20), Display(Name = "Description"), 
     Required(ErrorMessage = "An Name is required.")] 
     [MaxLength(50)] 
     [DisplayFormat(NullDisplayText = "Enter Student Name")] 
     [StringLength(50, MinimumLength = 2, ErrorMessage = "Student Name cannot be longer than 50 characters.")] 
     public string Name { get; set; } 

     [Column("AuthorId", Order = 30)] 
     [ForeignKey("User")] 
     public virtual User Author { get; set; } 
    } 

    public class User : ViewModelBase 
    { 
     [Key(), Column("UserId", Order = 10)] 
     [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
     public int UserId { get; set; } 

     [Column("Username", Order = 20), Required(ErrorMessage = "A Username is required.")] 
     [DisplayFormat(NullDisplayText = "Enter Username")] 
     [MaxLength(20)] 
     [StringLength(maximumLength: 20, MinimumLength = 2, ErrorMessage = "Username cannot be longer than 20 characters and must be at least 2 characters.")] 
     public string Username { get; set; } 
    } 
} 
+0

ような何かを、実際には本当に簡単ですあなたはスカラープロパティを宣言する必要があります、なぜあなたはそれを作成していないのですか? –

+0

間違い - それを指摘してくれてありがとう。 –

答えて

0

それはちょうど列を持つために、あなたが非スカラプロパティナビゲーションプロパティを持つ

public class ViewModelBase { 
    public int AuthorId { get; set; } 
    public virtual User Author { get; set; } 
} 
+0

ありがとうございます。私は提案された更新を試しましたが、テーブルは2つのフィールドで作成されます:AuthorとUserId –

+0

私はクラスに列修飾子を追加しようとしました:[ScaffoldColumn(false)] –

+0

EFは、外部キーの –

0
public class ViewModelBase { 
    public int AuthorId { get; set; } 

    [ForeignKey(nameof(AuthorId))] 
    public virtual User Author { get; set; } 
} 
関連する問題