2010-02-08 51 views
0

我遇到了一個問題,就好像存儲過程的第二次執行被忽略一樣。無法訪問ObjectTrackingEnabled linq

我第一次把它找到20條記錄,並提取日期範圍信息2009年8月的第一行是電錶編號233的數據值200

我然後調用的存儲過程和20我的存儲過程記錄也被返回。這一次電錶編號233的有300的數據值

的LINQ被檢測meterid 233已經存在的背景下,因此犯規更新

我相信這是值得做ObjectTrackingEnabled但是這似乎並沒有可以讓我設置爲假?

我沒有寫上下文代碼,所以我真的不知道這一切的作品,但我怎麼也注意到,它似乎從ObjectDataContext

繼承

這是生成使用實體框架和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

我們建議您使用MergeOption刷新對象。 下面是一個簡單的例子:

var query = from d in context.Depts 
        where d.Deptno < 50 
        select d; 
(query as ObjectQuery).MergeOption = MergeOption.OverwriteChanges; 
+0

感謝這個 - 不幸的是我無法測試,如果這個工程,因爲我得到了另一個問題http://stackoverflow.com/questions/2227685/query-results-cannot-的被列舉 - 不止一次,你有任何想法嗎? – Paul 2010-02-09 14:05:19

+0

嗨,當我嘗試這個(查詢爲ObjectQuery)爲空 任何想法? 乾杯 保羅 – Paul 2010-02-10 08:04:57

+0

也許你應該嘗試使用實體SQL,而不是在這個特殊的情況下。原因在Julie Lerman的博客中描述: http://thedatafarm.com/blog/data-access/querying-with-linq-to-entities-vs-objectquery-in-ef/ – Devart 2010-02-11 16:55:57