Breeze:使用NHibernate上下文提供程序时,不在元数据中的必需Validator

时间:2014-01-14 08:27:46

标签: breeze

我们注意到为以下模型生成的元数据:

    [Required]
    public virtual string Title { get; set; }

看起来像这样

 {
 nameOnServer: "Title",
 dataType: "String",
 isNullable: true
 },

换句话说,不会添加必需的验证器。

这是因为NH不使用数据注释。这是没有实现的东西还是我做错了什么?

1 个答案:

答案 0 :(得分:1)

是的,这是因为NH不使用数据注释。元数据是使用NHibernate的metadata api构建的,它从.hbm.xml文件,按代码映射或流畅配置获取信息。在元数据生成过程中可以检查模型类的注释,但这不是我们正在研究的东西。也可以在元数据结构创建之后(但在序列化为JSON之前)对其进行后处理,然后添加额外的元数据提示。

另外,我们在SaveChanges过程中有一个(公认的粗略)使用数据注释进行服务器端验证的例子。您可以在BeforeSaveEntities方法中使用DataAnnotationsValidator类,如下所示:

    protected override Dictionary<Type, List<EntityInfo>> BeforeSaveEntities(Dictionary<Type, List<EntityInfo>> saveMap) {
      var validator = new DataAnnotationsValidator(this);
      validator.ValidateEntities(saveMap, true);

      return base.BeforeSaveEntities(saveMap);
    }

我知道这不是你的想法(因为它根本不能帮助你进行客户端验证),但是如果你需要的话,它就在那里。

希望这有帮助。