2010-01-26 1 views
1

Я использую сущность framework 4 для создания сущностей из БД.проблема кэширования в структуре сущности 4

У меня есть 2 контекста сущности для подключения к db. скажем context1 и context2

Однако, когда я делаю следующие шаги, 1. Получение данных из context1 2. получить ту же строку данных из context2 3. обновление строки же данных в context1 4. получить те же данные строка из context2

context2 не изменяется после обновления на шаге 3.

Я думаю context2 кэшировать данные. не получая данные из db каждый раз.

как исправить?

Благодаря ~

ответ

0

Вы должны вызвать SaveChanges(), ну, за исключением изменений (возврат к БД).

Кроме того, если вы уже перечислили сборку с шага 2, то у вас не будет обновлений с шага 3, даже если вы сохраните изменения обратно в базу данных.

5

Контекст Entity Context получает данные из базы данных только один раз, после чего он кэшируется в памяти.

Чтобы получить данные из базы данных, вы должны сначала позвонить SaveChanges() в Context1. Затем, чтобы вызвать Refresh(RefreshMode.StoreWins, Context2.EntityToRefresh), чтобы получить значения базы данных в контексте2.

Вы также можете использовать контекст Share/Static для выполнения своих запросов, поскольку вы можете быть уверены, что у вас есть одинаковые данные для всех ваших запросов.

Вы можете реализовать его, как это

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; 
     } 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^