实体框架中的缓存问题4

1 .net entity-framework-4

我正在使用实体框架4从DB创建实体.

我有2个实体上下文连接到db.让我们说context1和context2

但是,当我执行以下步骤时,1.从context1获取数据2.从context2获取相同的数据行3.将相同的数据行更新为context1 4.从context2获取相同的数据行

在步骤3中更新后,context2不会更改.

我猜context2缓存了数据.每次都不从db获取数据.

怎么解决?

谢谢〜

Zie*_*ied 5

实体上下文仅从数据库中获取数据,然后将其缓存在内存中.

要从数据库获取数据,首先要调用SaveChanges()Context1.然后,调用Refresh(RefreshMode.StoreWins, Context2.EntityToRefresh)以获取context2中的数据库值.

您还可以使用共享/静态上下文来执行查询,因为您可以确保所有查询都具有相同的数据.

你可以像这样实现它

public class SharedObjectContext
{
    private readonly WestwindEntities context;

    #region Singleton Pattern

    // Static members are lazily initialized.
    // .NET guarantees thread safety for static initialization.
    private static readonly SharedObjectContext instance = new SharedObjectContext();

    // Make the constructor private to hide it. 
    // This class adheres to the singleton pattern.
    private SharedObjectContext()
    {
        // Create the ObjectContext.
        context = new WestwindEntities();
    }

    // Return the single instance of the ClientSessionManager type.
    public static SharedObjectContext Instance
    {
        get
        {
            return instance;
        }
    }   

    #endregion

    public WestwindEntities Context
    {
        get
        {
            return context;
        }
    }
} 
Run Code Online (Sandbox Code Playgroud)