服务器遇到处理请求的错误.请参阅服务器日志以获取更多详

Kou*_*osh 24 wcf entity-framework

我有一个简单的问题.

我在visual studio 2013中创建了一个WCF数据服务5.6,并在其*.svc.cs文件中修改了一行

public class CustomdataService : DataService< /* TODO: put your data source class name here */ >
Run Code Online (Sandbox Code Playgroud)

连接我的实体

public class CustomdataService : DataService< SchedulerEntities >
Run Code Online (Sandbox Code Playgroud)

但是,当我想在浏览器中看到该服务时,它会给我以下错误

请求错误

服务器遇到处理请求的错误.请参阅服务器日志以获取更多详

实体框架只不过是一张桌子......

Art*_*yom 26

实际错误可能不同.在我的情况下,我从AdventureWorks2012数据库开始时得到了相同的一般错误消息.

所以,实际的问题可以通过附加为在描述的服务类的属性可以看到在这里:

[ServiceBehavior(IncludeExceptionDetailInFaults = true)]
public class WcfDataServiceAW : EntityFrameworkDataService<AdventureWorks2012Entities> { ... }
Run Code Online (Sandbox Code Playgroud)

希望它可以帮助某人.

PS.我的错误是:

异常消息是'Address'类型的属性'SpatialLocation'是'Geography'类型,它不是受支持的基本类型.'.

  • 这应该是公认的答案,因为存在多种可能的潜在异常和原因。在开发/调试期间添加此属性是一种方法。 (2认同)

Kou*_*osh 23

似乎Entity Framework 6和WCF Data Services 5.6.0需要一些提供程序一起工作,请阅读有关使用带有Entity Framework 6+的WCF数据服务5.6.0的更多信息.

您只需使用NuGet Package Console Manager即可下载提供程序:

Install-Package Microsoft.OData.EntityFrameworkProvider -Pre
Run Code Online (Sandbox Code Playgroud)

它的版本是alpha 2,所以将来搜索最终版本.然而它对我有用.

最后一件事是,DataService<T>你需要使用,而不是使用EntityFrameworkDataService<T>.T是您的实体的名称.


Jak*_*ruk 5

根据这篇文章,您必须更改的继承类型CustomdataService

替换您的DataService的基本类型。对于EF 5或更低版本,您的数据服务应继承自DataService,其中T是DbContext或ObjectContext。对于EF 6或更高版本,您的数据服务应从EntityFrameworkDataService继承,其中T为DbContext。有关更多详细信息,请参见下面的DataService和EntityFrameworkDataService有什么区别。