微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

有没有办法让实体框架在搭建 CRUD 页面时包含主键列?

如何解决有没有办法让实体框架在搭建 CRUD 页面时包含主键列?

我有一个带有 EF 6 的 .net core 3.1 MVC 应用程序。我让它使用基于已经生成的模型的“新脚手架项”功能创建 CRUD 页面(我正在做“数据库优先”)。它生成的 cshtml 文件从不包含主键列,就像没有为它们制作文本框和标签一样。这些不是标识列。尽管对于确实具有标识列的表,如果将其包含在除 Create 之外的 CRUD 页面中会更好。

型号:

namespace ABCDashboard.Models
{
    public partial class TableMap
    {           
        public string EventOID { get; set; }           
        public string FormOID { get; set; }            
        public string ItemGroupOID { get; set; }
        public string TableSchema { get; set; }
        public string TableName { get; set; }
        public int? FormOrder { get; set; }
        public int? ItemGroupOrder { get; set; }
    }
}

用于创建、详细信息、删除、编辑和索引的 .cshtml 文件省略了 EventOID、FormOID 和 ItemGroupOID。

解决方法

解决方案是添加 DatabaseGenerated 注解:

using System.ComponentModel.DataAnnotations.Schema;

namespace ABCDashboard.Models
{
    public partial class TableMap
    {
        [DatabaseGenerated(DatabaseGeneratedOption.None)]
        public string StudyEventOID { get; set; }
        [DatabaseGenerated(DatabaseGeneratedOption.None)]
        public string FormOID { get; set; }
        [DatabaseGenerated(DatabaseGeneratedOption.None)]
        public string ItemGroupOID { get; set; }
        public string TableSchema { get; set; }
        public string TableName { get; set; }
        public int? FormOrder { get; set; }
        public int? ItemGroupOrder { get; set; }
    }
}

这适用于我的具有非身份 PK 的表的创建、索引和编辑页面。还不确定如何让它将作为身份列的 ID 也放在页面上(除了创建),但它总是只有一列,因此手动添加更容易。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。