0

我正在使用 ASP.Net 和 Database-Migrations atm。我正在向我的类添加一些功能,以通过对象获取一些额外的数据。

public IQueryable<CounterDiscussionThread> Answers
{
    get
    {
        return db.CounterDiscussionThreads.Where(e => e.Parent == CounterDiscussionThreadId);
    }
}

public CounterDiscussionThread LastPost
{
    get
    {
        return db.CounterDiscussionThreads.OrderByDescending(e => e.TimePosted)
                                          .First(e => e.CounterDiscussionThreadId == CounterDiscussionThreadId || e.Parent == CounterDiscussionThreadId);
    }
}

如果我在同一个线程中多次调用它们,它们会进行多个数据库查询,还是会自动缓存结果?

附加信息:数据库基础 DBContext

示例: <%# Item.LastPost.TimePosted.ToString("dd.MM.yyyy") %><%# Item.LastPost.TimePosted.ToString("t") %>。这会导致 1 或 2 个数据库查询吗?

4

1 回答 1

1

我假设您使用的是实体框架,因为您提到了数据库迁移。但与Linq to SQL类似,数据上下文会缓存结果并尽可能使用它们,以防止在同一个数据上下文实例中调用它们时返回SQL。

查看您的示例,如果一切设置正确(相同DbContext,启用缓存等),则应该只发生一个数据库查询。

于 2013-08-06T13:29:31.520 回答