Breeze EFContextProvider忽略验证数据注释属性

时间:2013-12-27 22:22:02

标签: entity-framework breeze

我面临一个问题,即通过元数据将数据注释验证属性返回给服务器。 这是我的班级:

public class User
{
     public string Name { get; set; } 
     public string Company { get; set; } 
}

我向用户添加了一个元数据类,因此我可以在那里配置验证属性:

[MetadataType(typeof(Metadata))]
    public partial class User
    {
        internal sealed class Metadata
        {
            private Metadata()
            {
            }
        }
      [Required]
      [MinLength(10)]
      .
      .
      .
      public string Company { get; set; } 
     }

在检查entity.entityAspect时,我无法在客户端看到此验证,我试图在DocCode中看到元数据结果,我看到这些属性确实出现在那里,但在我的模型中我没有查看通过元数据向客户端公开的此属性。

是否有任何额外的配置应该做到这一点,或者我可能错过任何其他问题。

1 个答案:

答案 0 :(得分:3)

似乎Breeze转向其元数据的实体框架EDM不尊重“伙伴类”上的MetadataTypeAttribute。看起来只检测到类本身上的数据注释属性,即使这样,只有它们中的某些属性才会进入元数据。

  

我很高兴得知我错了。

我们在积压的日志中扩展了Breeze .NET组件提取自定义数据注释的能力,这样的设施在元数据伙伴类中提取属性是很自然的。我不知道什么时候才能使用这个功能。我认为不会很快。

您可以考虑编写自己的组件来反映类,查找这些注释,并构建表示此补充元数据的简单结构。然后从自定义Web API端点公开它。然后,您的客户端boostrapping可以访问该端点,读取补充元数据并使用相关验证更新客户端元数据。是的,您可以在MetadataStore

中加载主要元数据后随时添加验证

希望我能想出更好的东西,或者在我的包里放些东西。

  

如果你写这个组件,请告诉我们和社区。我们很乐意在Breeze Labs提供它。当然还有充分的信誉和感激。