2011-04-05 19 views
2

我插入UserStat記錄屬性 - 沒有什麼不尋常的,到目前爲止,我可以告訴。基本思想是迭代一組值Stats,並創建UserStat記錄,複製一些Stat數據。LINQ到SQL不保存一個名爲「值」

但是,當我調試時,立即任何userStat.Value = <some number>;語句後,.Value的值仍然爲0.0。如果這很重要的話,它是SQL Server數據庫中的一個浮點數。 ,在分貝.AnotherProperty.SomeOtherProp場也是花車 - 它們被保存完美

我的一致性和可重複性的問題是,.Value永遠持續(甚至在本地實例)被修改時。也許這需要一雙新鮮的眼睛 - 我是否錯過了一些顯而易見的東西?

 using (MyDataContext db = new MyDataContext()) 
     { 
      List<UserStat> stats = new List<UserStat>(); 

      // create stats 
      foreach (var stat in db.Stats) 
      { 
       UserStat userStat = new UserStat() 
       { 
        // set some common properties 
       }; 

       switch (stat.ID) 
       { 
        case (int)Enums.Stats.Stat1: 
         userStat.Value = 1; 
         // right here, userStat.Value == 0 is true...HUH? 
         userStat.AnotherProperty = 2; 
         userStat.SomeOtherProp = 5; 
         break; 
        case (int)Enums.Stats.Stat2: 
         userStat.Value = 5; 
         // right here, userStat.Value == 0 is true...HUH? 
         break; 

        default: 
         break; 
       } 

       stats.Add(userStat); 
      } 

      db.UserStats.InsertAllOnSubmit(stats); 

      db.SubmitChanges(); 
     } 

更新

是的,這是我的錯。我對UserStat的部分班級定義爲OnValueChanged(),因爲這是我在很早以前實施的業務修改,因爲它是該班級唯一的業務修改,而其他人有很多我經常調試。

+0

你是否直接在評論處測試了'value == 0'?還是你在做這個假設,因爲它不能保存? – smartcaveman 2011-04-05 01:39:09

+0

@smartcaveman:「但是,當我調試時,...」我已經調試了該行後面的語句,它是0.0 – 2011-04-05 01:42:38

回答

0

糟糕 - 我錯過了一個局部的類定義,在.OnValueChanged()定義改性UserStat。

0

Value可能是一個關鍵字,並導致您一些意想不到的行爲。將該列名稱更改爲其他名稱。

+0

我曾考慮過,但1)對UserStat記錄的修改在我的其他地方項目和2)我用Linq調試到SQL分析器,它正在將'.Value'列適當地包裝在方括號中,例如'INSERT INTO [UserStat] SET [Value] = 123 ...'。有沒有一些特定的行爲是你建議造成的? – 2011-04-05 01:40:46

+0

讓我澄清 - 對UserStat'.Value'的修改如其他地方所預期的那樣工作。調試時,該對象與其未來的數據庫對應物無關,它只是數據上下文中對象的公共屬性。 – 2011-04-05 01:55:18