Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法在WCF服务中加载相关实体_C#_Wcf_Entity Framework - Fatal编程技术网

C# 无法在WCF服务中加载相关实体

C# 无法在WCF服务中加载相关实体,c#,wcf,entity-framework,C#,Wcf,Entity Framework,我使用的是实体框架4.1。我需要创建一个WCF服务,它需要从现有数据库中获取数据。我正在使用wsHttp绑定。我使用了支持WCF的DbContext生成器。以下是已生成的两个类: [DataContract(IsReference = true)] [KnownType(typeof(TestSummary))] public partial class Test { [DataMember] public int Id { get; private set; } [D

我使用的是实体框架4.1。我需要创建一个WCF服务,它需要从现有数据库中获取数据。我正在使用wsHttp绑定。我使用了支持WCF的DbContext生成器。以下是已生成的两个类:

[DataContract(IsReference = true)]
[KnownType(typeof(TestSummary))]
public partial class Test
{
    [DataMember]
    public int Id { get; private set; }

    [DataMember]
    public virtual TestSummary TestSummary { get; set; }
}
以及

当我获取所有测试对象时,我没有得到与之相关的TestSummary。我的所有其他实体也会发生同样的情况。用于获取测试实体的代码:

List<Test> tests = new List<Test>();
using (TestModelContainer context = new TestModelContainer())
{
    var query = (from t in context.Tests select t);

    foreach (var t in query)
    {
        Test test = (Test)t;
        tests.Add(test);
    }
}
List tests=newlist();
使用(TestModelContainer context=newtestmodelcontainer())
{
var query=(从上下文中的t开始,测试选择t);
foreach(查询中的var t)
{
测试=(测试)t;
测试。添加(测试);
}
}

但是,当我在不支持WCF的情况下使用DbContext生成器生成类时,所有相关的实体也会被加载(我使用控制台应用程序对其进行了测试)。

在查询中,您没有获取相关的
TestSummary
实体。您需要明确声明您希望通过向查询中添加
Include
语句来获取相关的testsummary

var query = (from t in context.Tests.Include("TestSummary") select t);
此外,不需要创建
列表测试
;您可以只返回从查询中获取的内容

using (TestModelContainer context = new TestModelContainer())
{
    var query = (from t in context.Tests select t);
    return query.ToList();
}
using (TestModelContainer context = new TestModelContainer())
{
    var query = (from t in context.Tests select t);
    return query.ToList();
}