为什么从数据库中获取实体?

时间:2017-11-11 16:47:29

标签: entity-framework

Profiler显示选择新约会进入数据库。为什么没有从上下文中提取约会,这仍然在内存中?

    var context = DatabaseHelper.CreateDbContext();

    var appointment = new Appointment();

    context.Appointments.Add(appointment);
    context.SaveChanges();

    var appointment0 = context.Appointments.Where(a => a.AppointmentId == appointment.AppointmentId).Single();

1 个答案:

答案 0 :(得分:1)

显然,只有在使用Find方法时才会使用Entity Framework第一级缓存。

context.Appointments.Find( a => a.AppointmentId == appointment.AppointmentId)

这是可以理解的,因为查询解析器不知道查询将检索哪些实体 只有当您明确地尝试基于其主键查找实体时,DbContext(实现Identity Map模式)才能首先查找是否已经存在与给定主键关联的实体。