【问题标题】:Metadata attributes not being applied in Database-First Entity Framework元数据属性未在数据库优先实体框架中应用
【发布时间】:2016-09-07 12:00:24
【问题描述】:

我花了两天时间在互联网上搜索我做错了什么。这里的每个教程和问题/答案都显示了相同的解决方案:

[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 中,但我真的更喜欢最小化反射爬取的数量。

【问题讨论】:

  • 你能把你的实体模型发给PEOPLE吗?
  • 另外,您的 MetaData 类和 Entity 类的命名空间是什么?确保两个命名空间相同。
  • 我更新了我的帖子。两个类的命名空间相同(使用 Intellisense 仔细检查自己)。

标签: c# asp.net-mvc entity-framework-6


【解决方案1】:

这个问题是多年前提出的,但我最近在使用 .net 和“数据库优先”解决方案的 WPF 应用程序时遇到了同样的问题。 EDMX .tt 文件不会从 MetadataType 装饰器更新。

我不确定 OP 使用的是什么类型的项目,但就我而言,我发现我必须自己创建一个验证上下文并手动验证我需要的内容。

Validation does not work when I use Validator.TryValidateObject - 这篇文章让我找到了 MetadataType 装饰器无法被我的项目识别的解决方案。

我按照示例创建了一个接受模型和元数据的通用类,我可以删除部分,基本上只有一个“元数据”模型。

如果您不使用 MVC 应用程序,希望此添加有助于为您指明正确的方向。

【讨论】:

    猜你喜欢
    • 2018-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多