这是一个模型类(由脚手架生成,没有任何改变):
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
namespace EFDBFirst.Models
{
public partial class Product
{
public Product()
{
OrderDetails = new HashSet<OrderDetail>();
}
public int ProductId { get; set; }
public string ProductName { get; set; } = null!;
public int? SupplierId { get; set; }
public int? CategoryId { get; set; }
public string? QuantityPerUnit { get; set; }
public decimal? UnitPrice { get; set; }
public short? UnitsInStock { get; set; }
public short? UnitsOnOrder { get; set; }
public short? ReorderLevel { get; set; }
public bool Discontinued { get; set; }
public virtual Category? Category { get; set; }
public virtual ICollection<OrderDetail> OrderDetails { get; set; }
}
}
为了在运行后保留数据注释属性
scaffold-dbcontext
,我假设我会
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Diagnostics;
namespace EFDBFirst.Models
{
public partial class ProductMetadata
{
[Required(ErrorMessage = @"Qty/Unit is required")]
[Display(Name ="QPU")]
public string? QuantityPerUnit { get; set; }
}
}
Product
类,我在其中链接元数据类:using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
namespace EFDBFirst.Models
{
[MetadataType(typeof(ProductMetadata))]
public partial class Product
{
}
}
但是显示名称不显示,并且未强制执行必需的属性。
我已经做过的事情:
顺便说一句,如果我将属性直接添加到原始模型类中,一切都会按预期工作。
有什么想法吗?我一生都无法弄清楚这里发生了什么……
MetadataType
已经过时了,我们将使用 ModelMetadataType
代替。得到OP的确认可以解决问题。