У меня была проблема, когда казалось, что второе выполнение хранимой процедуры игнорируется.
При первом вызове моей хранимой процедуры было найдено 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();
}
Мне нужен способ очистки этого кэша, чтобы объекты обновлялись правильно, или мне нужен способ обновления объектов
Может кто-нибудь помочь?
Приветствия
Пол