为什么模型导航不能与自我跟踪实体一起使用?

时间:2012-03-10 10:34:40

标签: c# wcf entity-framework self-tracking-entities

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

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

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

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

如果没问题,那么导航属性可见?

1 个答案:

答案 0 :(得分:2)

您的“模型导航”称为延迟加载,自我跟踪实体不支持设计延迟加载,因此您必须使用预先加载:

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();