【发布时间】:2011-10-25 21:13:49
【问题描述】:
我正在学习 WCF,并尝试制作一个小服务来公开项目及其任务(标准实体框架 hello world)。
类结构如下:
public class Project
{
public int ProjectId { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public DateTime CreationDate { get; set; }
public virtual ICollection<Task> Tasks { get; set; }
}
public class Task
{
public int TaskId { get; set; }
public string Title { get; set; }
public virtual Project RelatedProject { get; set; }
}
数据库上下文出现在:
public class ProjectContext : DbContext
{
public DbSet<Project> Projects { get; set; }
public DbSet<Task> Tasks { get; set; }
}
最后是服务端点:
public IEnumerable<Project> getProjects()
{
ProjectContext p = new ProjectContext();
return p.Projects.AsEnumerable();
}
问题是这个模型会抛出 System.ServiceModel.CommunicationException,但是,如果我从模型中删除虚拟属性,它会起作用,但我会失去 Project 和 Task 之间的实体框架链接。
有类似设置的人吗?
【问题讨论】:
-
如果包含
Tasks是否有效?return p.Projects.Include(p => p.Tasks).AsEnumerable(); -
这甚至不会编译,但我明白了这个想法,我会遵循这个选项;)
-
嗯,没试过(显然),但在ADO.NET Team Blog 上找到了:\
标签: wcf entity-framework