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