Я пытаюсь создать службу данных WCF поверх контекста объекта Entity Framework, который предоставляет ряд свойств System.TimeSpan. Однако, когда я пытаюсь получить доступ к сервису, я получаю следующую ошибку: «Свойство« ScheduledDepartureTime »типа« DepotRoute »имеет тип« Time », который не поддерживается типом примитива. '
Я пытался использовать 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, я переопределил CreateDataSource для предоставления ObjectContext, а не для создания службы как DataService ...
protected override ObjectContext CreateDataSource() {
var context = new MercuryContext().ObjectContext;
context.ContextOptions.ProxyCreationEnabled = false;
return context;
}
Однако я также пытался показать сервис, основанный на стандартной модели EF, но это тоже не имеет значения. Я даже пробовал использовать VS11 Develop Preview - это тоже не может раскрыть мои свойства.
Чего мне не хватает? Должен быть какой-то способ сделать это.