覆盖WCF数据服务CSDL

时间:2012-12-07 15:49:49

标签: .net web-services sharepoint wcf-data-services

我正在处理SharePoint 2010托管WCF数据服务的问题。所以请记住,我只能使用.NET 3.5。 为了生成用于描述我的实体的CSDL端点,我使用了适当的装饰器,并且我喜欢反思的好处来为我处理这项工作。

以下是MEX点的代码:

[BasicHttpBindingServiceMetadataExchangeEndpoint]
[ServiceBehavior(IncludeExceptionDetailInFaults = true)]
public class Demarches : DataService<CacheDataContext>
{
    public static void InitializeService(DataServiceConfiguration config)
    {
        config.UseVerboseErrors = true;
        config.SetEntitySetAccessRule("*", EntitySetRights.AllRead);
        config.SetServiceOperationAccessRule("*", ServiceOperationRights.AllRead);
        config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2;
    }
}

以下是我使用上述代码获得的CSDL文件的一部分:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <edmx:Edmx Version="1.0" xmlns:edmx="http://schemas.microsoft.com/ado/2007/06/edmx">
  <edmx:DataServices xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" m:DataServiceVersion="1.0">
<Schema Namespace="XXX.Poco" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns="http://schemas.microsoft.com/ado/2006/04/edm">
  <EntityType Name="Demarche">
    <Key>
      <PropertyRef Name="id" />
    </Key>
    <Property Name="id" Type="Edm.Int32" Nullable="false" />
    <Property Name="titre" Type="Edm.String" Nullable="true" />
    <Property Name="avancement" Type="Edm.String" Nullable="true" />
    <Property Name="date" Type="Edm.DateTime" Nullable="false" />
    <NavigationProperty Name="historiques" Relationship="XXX.Poco.Demarche_historiques" FromRole="Demarche" ToRole="historiques" />
    <NavigationProperty Name="proprietes" Relationship="XXX.Poco.Demarche_proprietes" FromRole="Demarche" ToRole="proprietes" />
    <Property Name="CacheDurationInSeconds" Type="Edm.Int32" Nullable="false" />
    <Property Name="CacheDurationInMinutes" Type="Edm.Int32" Nullable="false" />
    <Property Name="CacheDurationInHours" Type="Edm.Int32" Nullable="false" />
  </EntityType>

我必须在“avancement”属性上放置一个标志,因为它是我的业务代码中的枚举,我想动态地了解当我读取CSDL端点时,为了提供动态过滤系统,枚举的属性是什么当我开发客户端应用程序时 我应该有类似<Property Name="avancement" Type="Edm.String" Nullable="true" isFilterable="true"/>的东西。

首先,您是否知道这种修改是否会破坏某些解析工具,如SvcUtil.exe,Jaydata.exe? 那么,当我初始化Web服务配置时,是否有可能以编程方式实现此目标?

感谢您的建议。

0 个答案:

没有答案