为什么模型导航不适用于自跟踪实体

本文关键字:跟踪 实体 适用于 不适用 模型 导航 为什么 | 更新日期: 2023-09-27 18:27:31

我已经用外键生成了数据模型(实体框架)。它是从数据库中生成的数据模型。在那之后,一切都工作了,导航等等。接下来,我生成了一个自跟踪实体。不幸的是,我失去了导航功能。例如,此查询现在不起作用:

    public int GetUserTagsNumber( SessionContainer inputData ) {
        return db.User_t.Single(x => x.pid == inputData.Pid).Tag_t.Count();
    }

我是自跟踪实体和wcf的新手。所以,我的问题是:

为什么导航在服务端也不起作用?

如果可以,那么哪些导航属性是可见的?

为什么模型导航不适用于自跟踪实体

您的"模型导航"被称为延迟加载,自跟踪实体在设计上不支持延迟加载,因此您必须使用热切加载:

db.User_t.Include("Tag_t").Single(x => x.pid == inputData.Pid).Tag_t.Count();

但这是错误的查询方式,因为您必须从数据库中加载用户和所有标签才能计算标签。使用直接查询从数据库中获取计数怎么样?

db.Tag_t.Where(/* here put condition to find tags used by your user */).Count();