多くの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開発プレビューを使って試してみました - これも私のプロパティを公開することはできません。
私には何が欠けていますか?これを行うには何らかの方法が必要です。
http://stackoverflow.com/questions/5587433/how-do-i-expose-a-timespan-through-a-wcf-data-service – JayC
JayC:ちょうどそれを見て、私はそうは思わない。これは具体的にはEF生成プロパティに関するものですが、元の投稿は手作りのプロパティを公開しているように見えますが、コードで変更することができます(プロパティは生成されます)。 –