我正在使用 Entity Framework 4.1。我需要创建一个 WCF 服务,该服务需要从现有数据库中获取数据。我正在使用 wsHttp 绑定(bind)。我使用了带有 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 生成器生成类时,也会加载所有相关实体(我使用控制台应用程序对其进行了测试)。
最佳答案
在您的查询中,您没有获取相关的 TestSummary
实体。您需要明确声明您想要通过添加 Include
来获取相关的 TestSummaries针对您的查询的声明。
var query = (from t in context.Tests.Include("TestSummary") select t);
此外,无需创建 List<Test> tests
;您可以只返回从查询中获取的内容;
using (TestModelContainer context = new TestModelContainer())
{
var query = (from t in context.Tests select t);
return query.ToList();
}
关于c# - 无法加载 WCF 服务中的相关实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14461526/