Не удается добраться до ObjectTrackingEnabled linq - PullRequest
0 голосов
/ 08 февраля 2010

У меня была проблема, когда казалось, что второе выполнение хранимой процедуры игнорируется.

При первом вызове моей хранимой процедуры было найдено 20 записей и извлечена информация для диапазона дат август 2009 г. Первая строка была идентификатором счетчика 233 со значением данных 200

Затем я вызвал хранимую процедуру, и 20 записей также были возвращены. Этот идентификатор 233 измерителя времени имел значение данных 300.

Linq обнаруживает, что meterid 233 уже существует в контексте и поэтому не обновляет

Я уверен, что это как-то связано с ObjectTrackingEnabled, но я не могу установить значение false?

Я не написал код контекста, поэтому я не знаю, как все это работает, но я заметил, что он, кажется, наследуется от ObjectDataContext

Это было сгенерировано с использованием Entity Framework и VS 2008

Пространство имен DataServiceDAL {

/// <summary>
/// There are no comments for dbChildDataContext in the schema.
/// </summary>
public partial class dbChildDataContext : global::System.Data.Objects.ObjectContext
{
    /// <summary>
    /// Initializes a new dbChildDataContext object using the connection string found in the 'dbChildDataContext' section of the application configuration file.
    /// </summary>
    public dbChildDataContext() : 
            base("name=dbChildDataContext", "dbChildDataContext")
    {
        this.OnContextCreated();            
    }
    /// <summary>
    /// Initialize a new dbChildDataContext object.
    /// </summary>
    public dbChildDataContext(string connectionString) : 
            base(connectionString, "dbChildDataContext")
    {
        this.OnContextCreated();
    }
    /// <summary>
    /// Initialize a new dbChildDataContext object.
    /// </summary>
    public dbChildDataContext(global::System.Data.EntityClient.EntityConnection connection) : 
            base(connection, "dbChildDataContext")
    {
        this.OnContextCreated();
    }
    partial void OnContextCreated();

.............. }

Я использую следующий linq для извлечения данных

    public static List<MeterTotalConsumpRecord> GetTotalAllTimesConsumption(DateTime dtStart, DateTime dtEnd, EUtilityGroup ug, int nMeterSelectionType, int nCustomerID, 
        int nUserID, string strSelection, bool bClosedLocations, bool bDisposedLocations)
    {    
        dbChildDataContext db = DBManager.ChildDataConext(nCustomerID);

        var tbl = from t in db.GetTotalConsumptionByMeter(dtStart, dtEnd, (int) ug, nMeterSelectionType, nCustomerID, nUserID, strSelection, bClosedLocations, bDisposedLocations, 1)                       
                  select t;                        

        return tbl.ToList();            
    }

Мне нужен способ очистки этого кэша, чтобы объекты обновлялись правильно, или мне нужен способ обновления объектов

Может кто-нибудь помочь?

Приветствия

Пол

1 Ответ

0 голосов
/ 09 февраля 2010

Мы рекомендуем обновить объекты, используя MergeOption . Вот простой пример:

var query = from d in context.Depts
                   where d.Deptno < 50
                   select d;
(query as ObjectQuery).MergeOption = MergeOption.OverwriteChanges;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...