首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >缓存一些数据EF

缓存一些数据EF
EN

Stack Overflow用户
提问于 2018-08-27 19:04:29
回答 2查看 65关注 0票数 1

我有一个DbContext和许多实体。我想缓存其中的一个实体。即,我有一个实体Address

代码语言:javascript
运行
复制
public partial class Address : BaseEntity
{
    public string Street { get; set; }
    public string City { get; set; }
    public string ZipPostalCode { get; set; }
    public int StateProvinceId { get; set; }
    public string ContactName { get; set; }
    public string ContactPhone { get; set; }
    public string ContactFaxNumber { get; set; }
    public string ContactEmail { get; set; }

    public virtual StateProvince StateProvince { get; set; }
}

StateProvince

代码语言:javascript
运行
复制
public partial class StateProvince : BaseEntity
{
    public string Name { get; set; }
    public string Abbreviation { get; set; }
    public int TruckSpeedLimit { get; set; }
}

当我通过Id获取地址时,例如:

代码语言:javascript
运行
复制
var address = _db.Addresses.Where(p=>p.Id == id).FirstOrDefault();

然后尝试获取State name:

代码语言:javascript
运行
复制
var state = address.StateProvince.Name;

它会向DB再创建一个请求。如果我有一个地址列表,它会创建count of list element的额外请求

当然,我可以在Linq查询中创建DTO类并进行投影,如下所示:

代码语言:javascript
运行
复制
var address = _db.Addresses.Where(p=>p.Id == id).Select(p=> new AddressDTO{ Id = p.Id, ..., StateName = p.StateProvince.Name..}).FirstOrDefault();

但是我的代码架构师根本不喜欢DTO类,我也不想为简单的实体创建重复的类。

状态列表是静态的。我怎么对EF说:“请给我缓存状态!”并避免对db的额外请求?

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52037882

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档