我需要将dataannotation属性添加到我的实体,但是我的实体之外。为什么?我的所有类都是由T4生成的,如果我向属性(DisplayName,Min,Max等)添加一些数据注释,当我重新运行T4来生成我的实体时,它们将会丢失。我希望实体由T4生成,然后在另一个类中执行以下操作:
Dog.Name.AddDataannotation(new DisplayNameDataAnnotation(“My dog”));
该课程类似于
public class Dog
{
public int DogId { get; set; }
public string Name { get; set; }
}
它就像数据注释的流畅api。通过这种方式,我可以将我的数据注释与我的实体分开,我可以重新生成它们而不会丢失它们。如果有人问我不能使用DTO。另一件事,我有一个基于其DataAnnotations验证实体的类,我想让它继续工作。
是否可以做这样的事情?
谢谢,对不起我的英文!
答案 0 :(得分:1)
MetadataTypeAttribute
旨在处理此方案。它不漂亮,但应该有用。
采取的步骤如下:
partial
[MetadataType]
(例如[MetadataType(typeof(DogMetadata))]
] DogMetadata
中的属性,在那里添加属性完整示例:
//dog.generated.cs
partial class Dog
{
public int DogId { get; set; }
public string Name { get; set; }
}
//dog.cs
[MetadataType(typeof(DogMetadata))]
partial class Dog {}
class DogMetadata
{
[DisplayName("My dog")]
public string Name { get; set; }
}