【问题标题】:Key column not displayed despite ScaffoldColumn(true)尽管 ScaffoldColumn(true),但未显示键列
【发布时间】:2011-08-23 21:49:52
【问题描述】:

我正在使用 EF CodeFirst 开发 ASP.NET MVC 3 项目。我有一个简单的类,在键列上设置了几个属性:

public class Tag
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    [ScaffoldColumn(true)]
    public short TagID { get; set; }

    [Required]
    [MaxLength(50)]
    public string Name { get; set; }
}

如您所见,有 DatabaseGenerated(DatabaseGeneratedOption.None) 和 ScaffoldColumn(true) 属性。那是因为我希望能够手动输入 TagID。现在,当将 TagControler 添加到项目中时,我在 5 个生成的视图中都没有显示 TagID 列。

我知道我可以手动添加它,但我想知道这种行为是设计使然还是我做错了什么?

【问题讨论】:

    标签: asp.net-mvc-3 ef-code-first data-annotations


    【解决方案1】:

    默认情况下,主键不作为可编辑字段搭建。相反,密钥有一个隐藏字段。如果您想更改此行为,您可以修改模板,但这是设计使然,因为通常编辑实体的主键没有意义。

    如果您想在添加视图时进行此更改或想对脚手架进行其他自定义更改,以下是有关如何执行此操作的一些信息:

    http://blogs.msdn.com/b/joecar/archive/2011/01/06/add-the-asp-net-mvc-3-code-templates-to-your-application-with-nuget.aspx

    【讨论】:

    • 我同意编辑实体的主键没有意义,但在创建时手动输入它肯定是有意义的。恕我直言,不是由数据库自动生成的主键字段与任何其他可编辑字段之间的唯一区别应仅在编辑视图中,其中主键字段应显示为只读。
    猜你喜欢
    • 1970-01-01
    • 2017-12-01
    • 1970-01-01
    • 2020-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多