带有 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

EF CTP5 - 找不到“数据库优先”示例

WCF 数据服务和 EF4 CTP5,如何为查询配置默认的急切加载模式?

EF CTP5 - 强类型急切加载 - 如何包含嵌套导航属性?

EF Code First CTP5 - 使用属性名称作为外键的列名

EF4 CTP5 Code First 方法忽略表属性