带有 EF CTP 5 CodeOnly DbContext 的 WCF 数据服务
Posted
技术标签:
【中文标题】带有 EF CTP 5 CodeOnly DbContext 的 WCF 数据服务【英文标题】:WCF DataService with EF CTP 5 CodeOnly DbContext 【发布时间】:2011-02-26 12:06:21 【问题描述】:我正在尝试在纯代码DbContext
之上构建 WCF 数据服务。但是,一旦我将第一个 DbSet
属性添加到我的 DbContext
中,访问 .svc 时就会出现“请求错误”。
我需要得到这个错误是有这个DbContext
:
public class JukeboxContext : DbContext
public DbSet<Song> Songs get; set;
然后基于它做一个基本的WCF DataService,当我运行该服务时就会发生错误。
对我需要做什么有什么想法吗?
【问题讨论】:
您确定您的带有歌曲集的 JukeboxContext 有效吗?由于 EF 本身的问题,请求错误可能只是一般错误。 是的,我很确定。我直接使用它没有问题 - 只有当我访问服务时我才会遇到问题。 我添加了:[System.ServiceModel.ServiceBehavior(IncludeExceptionDetailInFaults = true)] 以获得更好的异常,它说: 服务器在处理请求时遇到错误。异常消息是“在数据上下文类型“JukeboxContext”上,有一个*** IQueryable 属性“Songs”,其元素类型不是实体类型。确保 IQueryable 属性是实体类型或在数据上下文类型上指定 IgnoreProperties 属性以忽略此属性。有关详细信息,请参阅服务器日志。 【参考方案1】:原来异常意味着它无法解析哪个字段是主键。 最简单的方法是将其命名为 ID 或 ID - 否则 DataServiceKey 属性将允许您使用复合键
【讨论】:
以上是关于带有 EF CTP 5 CodeOnly DbContext 的 WCF 数据服务的主要内容,如果未能解决你的问题,请参考以下文章
EF Code First CTP 5 和 SQL SErver 2008 R2
WCF 数据服务和 EF4 CTP5,如何为查询配置默认的急切加载模式?
EF CTP5 - 强类型急切加载 - 如何包含嵌套导航属性?