Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在实体框架中设置字段名_C#_Sqlite_Entity Framework Core - Fatal编程技术网

C# 在实体框架中设置字段名

C# 在实体框架中设置字段名,c#,sqlite,entity-framework-core,C#,Sqlite,Entity Framework Core,有没有一种方法可以指导实体框架将什么称为字段 在本例中,在创建Student表时,我希望EF创建Author字段,其列名为AuthorId 例如: namespace Student.Models { public class Student: ViewModelBase { [Key(), Column("StudentId", Order = 10)] public int StudentId { get; set; } [C

有没有一种方法可以指导实体框架将什么称为字段

在本例中,在创建
Student
表时,我希望EF创建
Author
字段,其列名为
AuthorId

例如:

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; }
    }
}

其实这很容易,只要做一些

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

您有一个导航属性而不是标量属性,为了拥有一个列,您需要声明一个标量属性,为什么不创建它?一个错误-感谢您指出它。感谢您的回复。我尝试了建议的更新,但是创建的表有两个字段:Author和UserIdI还尝试向类添加列修饰符:[ScaffoldColumn(false)]EF不会创建虚拟字段列,只创建外键中的一个。
public class ViewModelBase {
    public int AuthorId { get; set; }

    [ForeignKey(nameof(AuthorId))]
    public virtual User Author { get; set; }
}