使用 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 并且它有效。
它更像是一种解决方法,而不是解决方案,但它确实有效。
我正在使用 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 并且它有效。
它更像是一种解决方法,而不是解决方案,但它确实有效。