2

我正在使用实体框架 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; }
}

和,

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

    [DataMember]
    public virtual Test Test { get; set; }
}

当我获取所有 Test 对象时,我没有得到与之相关的 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);
    }
}

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

4

1 回答 1

2

in your query, you are not fetching related TestSummary entities. You need to declare explicitly that you want to fetch related TestSummaries with adding an Include statement to your query.

var query = (from t in context.Tests.Include("TestSummary") select t);

Also, there is no need to create List<Test> tests; you may just return what you have fetched from the query;

using (TestModelContainer context = new TestModelContainer())
{
    var query = (from t in context.Tests select t);
    return query.ToList();
}
于 2013-01-22T15:02:36.093 回答