在数据库优先实体框架中未应用元数据属性
本文关键字:应用 数据属性 框架 数据库 实体 | 更新日期: 2023-09-27 18:05:58
我花了两天时间在网上寻找我做错的地方。这里的每个教程和问题/答案都显示了相同的解决方案:
[MetadataType(typeof(PEOPLE_Metadata))]
public partial class PEOPLE { }
public class PEOPLE_Metadata
{
[DisplayName("Social Security Number")]
public string SSN { get; set; }
}
问题是这对我不起作用。当我在视图中浏览PEOPLE类的属性时,SSN属性没有显示任何属性和自定义属性。我可以看到PEOPLE类具有MetadataType属性。我试过把类分成单独的文件,同一个文件,元数据类在局部,两个分开,设置元数据类局部,内部,密封,公共,一切。我真的不知道为什么这对我不起作用,而所有人都说它应该起作用。
请帮帮我。
PEOPLE类如下:
public partial class PEOPLE
{
public int ID { get; set; }
public string SSN { get; set; }
public string NAME { get; set; }
}
可能值得强调的是,我试图通过反射来查看属性的元数据属性。更多的研究向我展示了如何提取元数据属性,然后反射到元数据类PEOPLE_Metadata中,但我真的更喜欢最小化正在进行的反射爬行的数量。
这个问题很多年前就有人问过了,但是我最近在使用。net和"数据库优先"解决方案的WPF应用程序时遇到了同样的问题。tt文件不会从MetadataType装饰器更新。
我不确定OP使用的是什么类型的项目,但在我的情况下,我发现我必须自己创建一个验证上下文,并手动验证我需要的内容。
当我使用Validator时,验证不起作用。TryValidateObject -这篇文章让我找到了MetadataType装饰器不被我的项目识别的解决方案。
我按照这个例子创建了一个接受模型和元数据的泛型类,我可以删除部分,基本上只有一个"元数据"模型。