c# - 无法加载 WCF 服务中的相关实体

标签 c# wcf entity-framework

我正在使用 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/

相关文章:

jquery - 代码可以与 Postman 一起使用,但不能在 localhost Ajax 上使用

WCF 服务 - 运行时在接口(interface)上看不到 ServiceContract

.net - ASP.NET MVC 5、 Entity Framework 、Ninject 和 Multi-Tenancy 设置

c# - linq使用时间戳列进行过滤

wcf - 找不到 'System.IdentityModel.Tokens.UserNameSecurityToken' token 类型的 token 验证器。

c# - asp.net mvc Binder 不更新编辑 View 中的 RoleId 值

c# - 加载 block 的 Minecraft 速度

c# - 如何更改 DateTimeFormatInfo.CurrentInfo AbbreviatedDayNames 集合

c# - 如何使用asp.net登录其他网站?

c# - CUDA 驱动程序 API 与 CUDA 运行时