2012-02-26 6 views
3

多くのSystem.TimeSpanプロパティを公開するEntity FrameworkオブジェクトコンテキストでWCFデータサービスを作成しようとしています。ただし、サービスにアクセスしようとすると、次のエラーが表示されます。 'タイプ' DepotRoute 'のプロパティ' ScheduledDepartureTime 'は、サポートされていないプリミティブタイプである' Time 'タイプです。'WCF DataService with Entity Framework:TimeSpan support

I DataServiceConfiguration.RegisterKnownType(typeof演算(のTimeSpan))を使用して試してみましただけでなく、DataServiceConfiguration.EnableTypeAccess(typeof演算(のTimeSpan).FullName)が、これらのいずれも任意の違いを作るように見える - 私はまだエラーが出る...

public static void InitializeService(DataServiceConfiguration config) { 

    config.SetEntitySetAccessRule("*", EntitySetRights.AllRead); 
    config.SetServiceOperationAccessRule("*", ServiceOperationRights.All); 
    config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2; 
    config.UseVerboseErrors = true; 

    config.RegisterKnownType(typeof(TimeSpan)); 
    config.EnableTypeAccess(typeof(TimeSpan).FullName); 

    RouteTable.Routes.Add(new ServiceRoute("Data", new DataServiceHostFactory(), typeof(Data))); 

} 

私のコンテキストはDbContextとして生成されているが、私はむしろのDataServiceとしてサービスを作成するよりものObjectContextを公開するCreateDataSourceをオーバーライドしている...

protected override ObjectContext CreateDataSource() { 

    var context = new MercuryContext().ObjectContext; 
    context.ContextOptions.ProxyCreationEnabled = false; 

    return context; 

} 

私はしかし、サービスのBAを暴露しようとしています標準的なEFモデルには賛成ですが、これも違いはありません。私はVS11開発プレビューを使って試してみました - これも私のプロパティを公開することはできません。

私には何が欠けていますか?これを行うには何らかの方法が必要です。

+0

http://stackoverflow.com/questions/5587433/how-do-i-expose-a-timespan-through-a-wcf-data-service – JayC

+0

JayC:ちょうどそれを見て、私はそうは思わない。これは具体的にはEF生成プロパティに関するものですが、元の投稿は手作りのプロパティを公開しているように見えますが、コードで変更することができます(プロパティは生成されます)。 –

答えて

0

EFは、クエリ内のTimeSpan型を使用することはできません。 TimeSpanをそれが表す対応するDateTime値に変換する必要があります。

+1

TheGeekYouNeed:私の問題は、EFモデルを照会するのではなく、WCF Data Servicesを通じて公開することです。私は時間フィールドに基づいて照会する必要はありません。 –

関連する問題