问题描述
我有一个带有 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 也放在页面上(除了创建),但它总是只有一列,因此手动添加更容易。