使用 efcore .netcore 在我的 razor web 应用程序中分配给单独的部分 class 时,关键数据注释不起作用

Key data annotation not working when assigned to a separate partial class in my razor web app using efcore .netcore

我正在使用 efcore 在 Razor Web 应用程序 (asp.netcore) 中开发一个应用程序并搭建数据库 tables。

我对我的 OnlineForms 数据 table 执行了 db-scaffold,它创建了我的 OnlineForms.cs Class。当我在这个class中直接将[key]属性放在formid 属性之上时,我可以毫无问题地保存到数据table。

但是当我通过 [ModelMetadataType] 属性将 [key] 数据注释移动到引用 OnlineForms 的部分 class OnlineFormsValidation 中时,我尝试保存数据;我收到错误消息:“实体类型 'OnlineForm' 需要定义主键。”

Required 注释在 OnlineFormsValidation class 中可以正常工作,但 [Key] 注释不能。

提前谢谢你。任何帮助将不胜感激。

OnlineForm.cs:

namespace VehicleTakeHomeApp.Data.Models
{
   public partial class OnlineForm {
       [Key] <== works if i put it here, but I want to move it to OnlineFormValidation.cs
       public int FormId { get; set; }
       public string EmployeeId { get; set; }
       public string Name { get; set; }
   }
}

OnlineFormValidation.cs:

using Microsoft.AspNetCore.Mvc;
using System.ComponentModel.DataAnnotations;

namespace VehicleTakeHomeApp.Data.Models
{

    [ModelMetadataType(typeof(OnlineFormValidation))]
    public partial class OnlineForm
    {
    }

    public class OnlineFormValidation
    {
        [Key]  <== this annotation is not getting picked up, even though the Required annotations below it get picked up.
        public int FormId { get; set; }

        [Required(ErrorMessage = "Employee ID is required.")]
        public string EmployeeId { get; set; }

        [Required(ErrorMessage = "Name is required.")]
        public string Name { get; set; }
    }
}

我的 dbcontext class 中的 OnModelCreating 方法被注释掉了。此方法包含来自初始 db-scaffold 的 HasKey()。

我取消了 OnModelCreating 方法的注释,现在我不需要将 [Key] 注释添加到任何一个 class 并且它有效。

它更像是一种解决方法,而不是解决方案,但它确实有效。