我遇到了一个问题,就好像第二次执行存储过程被忽略了一样。
我第一次调用我的存储过程时,它找到了20条记录,并提取了2009年8月日期范围内的信息。第一行是meter id 233,数据值为200
然后我调用了存储过程,还返回了20条记录。该时间表id 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();
}
我需要一种清除缓存的方法,以便正确更新对象或者我需要一种刷新对象的方法
有人可以帮忙吗?
干杯
保
答案 0 :(得分:0)
我们建议您使用MergeOption刷新对象。 这是一个简单的例子:
var query = from d in context.Depts
where d.Deptno < 50
select d;
(query as ObjectQuery).MergeOption = MergeOption.OverwriteChanges;