首页 文章

WCF服务 Contract 上的数据注释

提问于
浏览
6

我有一个WCF服务,其中定义了[DataContract]类 . 每个属性都有[DataMember]属性,我已经为几个属性添加了几个Data Annotation属性[Required]和[StringLength] .

然后我在asp.net MVC应用程序中使用此服务作为服务引用 . 当我获得所有属性的列表时使用

var attr= from prop in TypeDescriptor.GetProperties(instance).Cast<PropertyDescriptor>()
                        from attribute in prop.Attributes.OfType<ValidationAttribute>()
                        select attribute;

我没有看到数据注释都没有通过 . 这是WCF的限制还是我在这里做了一些根本错误的事情?

2 回答

  • 3

    通过网络发送数据 Contract 时,属性不会被序列化 . 您在与属性关联的esentially元数据中创建的新属性,以及属性所属的Type . 这不是数据,也不可用 .

    我想你已经在你的asp.net mvc应用程序中添加了一个服务引用,除非另有说明,否则将创建代表你的数据 Contract 的新代理类 .

    添加服务引用时,如果单击高级按钮,请确保选中“使用现有类型” . 这可确保您的服务将使用您现有的conract .

    这可能不是最佳实践,因为客户端应用程序必须了解您从服务返回的类型 . 如果您的服务仅由您自己使用,则可能没问题,在这种情况下,您需要在asp.net mvc应用程序中添加对 Contract 的引用 .

  • 7

    OData团队正在开发一种解决方案,将验证元数据公开为“词汇表” .

    更多信息:http://www.odata.org/blog/vocabularies

相关问题