SharePoint 2010 Hosted WCF Data Services の問題に対処しています。したがって、私は.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 サービス構成を初期化するときに、プログラムでこの目標を達成することは可能ですか?
提案をありがとう。