【问题标题】:Why model navigation is not working with Self-tracking entity?为什么模型导航不适用于自跟踪实体?
【发布时间】:2012-03-10 10:34:39
【问题描述】:

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

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

    您的“模型导航”被称为延迟加载,而自我跟踪实体不支持延迟加载,因此您必须改用急切加载:

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

    【讨论】:

    • 是的,你说得对,它不是获取数据的有效方式,这只是说明我的问题的例子。谢谢你的回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-21
    • 2015-04-02
    • 1970-01-01
    • 2011-07-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多