2012-02-26 4 views
3

많은 System.TimeSpan 속성을 노출하는 Entity Framework 개체 컨텍스트를 통해 WCF 데이터 서비스를 만들려고합니다. 그러나 서비스에 액세스하려고하면 다음 오류가 발생합니다. ''DepotRoute '유형의'ScheduledDepartureTime '속성이'Time '유형으로 지원되는 기본 유형이 아닙니다.'Entity Framework를 사용하는 WCF DataService : TimeSpan 지원

내가 DataServiceConfiguration.RegisterKnownType (대해서 typeof (시간 범위))뿐만 아니라 DataServiceConfiguration.EnableTypeAccess (대해서 typeof (시간 범위) .FullName) 만 사용하여 시도했다 이들 중 어느 쪽도 차이 만들 것 - 나는 여전히 오류를 ...

내 상황이 DbContext로 생성되고 있지만
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))); 

} 

는, 나는

protected override ObjectContext CreateDataSource() { 

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

    return context; 

} 

내가 그러나 또한 서비스 학사 학위를 노출 시도 ... DataService에 같은 서비스를 만드는 대신 ObjectContext를 노출하는 CreateDataSource를 오버라이드 (override) 한 표준 EF 모델에 따라 달라 지지만 이것도 아무런 차이가 없습니다. VS11 Develop Preview를 사용하여이 도구를 사용해 보았습니다. 이것은 또한 내 속성을 노출시킬 수 없습니다.

무엇이 누락 되었습니까? 이를 수행 할 수있는 방법이 있어야합니다.

+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 값으로 TimeSpan을 변환해야합니다.

+1

TheGeekYouNeed : 내 문제는 EF 모델을 쿼리하는 것이 아니라 WCF 데이터 서비스를 통해 노출시키는 것입니다. 시간 필드를 기반으로 쿼리 할 필요가 없습니다. –

관련 문제