我没想到我疯了所以我回去做了一个示例项目来重现并展示发生了什么。
我有4个简单的项目,如下面的
我将EDMX添加到数据项目
这是我的表格结构
以下是EDMX的属性
生成的类
将对WCF服务库的引用添加到数据项目
使用默认测试
测试Wcf客户端
添加Wcf方法
而她正在要求EF6参考
添加引用后我的方法就像这样
再次运行测试客户端我得到此异常
所以我从Data.Edmx项目中复制连接字符串并将其添加到WCF项目
并运行测试客户端,并在EDMX中只有一个表是正确的返回。
但是当我更新模型并像正常一样添加多个表时,它会中断。所以我只添加了一个表(如下所示),它打破了这个错误。它适用于任何表格。模型中有多个表格无法使用。
我缺少一步吗?或者为什么多个表使用EF6.1打破WCF?
编辑这也打破了它
使用类似
的课程public partial class Item
{
public int ItemId { get; set; }
public string Name { get; set; }
public int CategoryId { get; set; }
public virtual Category Category { get; set; }
}
和
public partial class Category
{
public Category()
{
this.Categories1 = new HashSet<Category>();
this.Items = new HashSet<Item>();
}
public int CategoryId { get; set; }
public string Name { get; set; }
public Nullable<int> ParentId { get; set; }
public virtual ICollection<Category> Categories1 { get; set; }
public virtual Category Category1 { get; set; }
public virtual ICollection<Item> Items { get; set; }
}
答案 0 :(得分:4)
这里的问题是当WCF调用返回时,它会尝试序列化对象(也包括导航属性)。
public virtual Category Category { get; set; }
和
public virtual ICollection<Category> Categories1 { get; set; }
public virtual Category Category1 { get; set; }
public virtual ICollection<Item> Items { get; set; }
如果您不需要导航属性,则只需将其标记为私有或内部属性即可。
您还可以查看此链接以获取更多详细信息Entity Framework Navigation Properties looping issue though WCF