我在Web应用程序中使用MVC3框架和EntityFramework 6。我使用系统Web缓存将大多数用ef加载的用户特定数据存储在服务器缓存中。我的DbContext是特定于请求的(每个请求一个实例)。问题是我还将缓存中的ef实体对象缓存为用户特定的(每个用户应用程序单独的缓存密钥)。对于每个请求,我从缓存中获取它并使用context.Attach将其附加到当前的EF上下文。我的问题是,如果同一用户同时登录两次或多次(不同的浏览器等),则缓存的实体将附加到多个上下文,因为缓存是每个服务器的全局,并且检索相同的对象引用。 / p>
我得到一个例外,即不同的上下文多次引用同一个实体。当我从缓存中获取实体时,我试图复制该实体,但它有许多带有子实体的外键,这不是一个选项。
有谁知道我的案例中的解决方案是什么?我试图避免从每个请求的数据库中获取实体。