【发布时间】:2016-04-07 09:47:50
【问题描述】:
我遇到了一些非常具体的问题,想知道是否有人遇到过同样的问题。
我的 SQL 查询(在存储过程中)很简单,我已经简化了一点,但是:
BEGIN
SELECT DISTINCT
[ANU].[OldUserId] AS [ID]
,[ANU].[Email]
FROM
[dbo].[AspNetUsers] AS [ANU]
INNER JOIN
[dbo].[User] AS [U]
ON
[U].[ID] = [ANU].[OldUserId]
END
很简单,直接通过SQL Management Studio运行SP就可以了。
但是,我通过实体框架运行它:
[ResponseCache(Duration = 0)] // used this out of desperation
public List<DriverDTO> GetByOrganisation(int organisationId, bool isManager)
{
return _context.Set<DriverDTO>().FromSql("dbo.New_User_List @OrganisationId = {0}, @IsManager = {1}", organisationId, isManager).ToList();
}
DriverDTO:
public class DriverDTO
{
[Key] // tried removing this also
public int ID { get; set; }
public string Email { get; set; }
}
它运行并返回结果,很好。但是,这些结果正在被缓存。第一次调用后对 SP 的每次调用都会返回相同的结果,即使我更新了记录。因此,假设我编辑了用户记录并更改了电子邮件 - 最初获取的电子邮件将始终被带回。
同样,通过 SQL 管理器运行 SP 会返回正确的结果,但我的 C#/EF 端没有。我脑子里唯一合乎逻辑的事情是,我迫切需要绕过的东西以某种方式被缓存在引擎盖下?!
【问题讨论】:
标签: c# asp.net .net asp.net-mvc entity-framework