簡體   English   中英

SubmitChanges()不更新數據庫

[英]SubmitChanges() not updating the database

我是ADO.NET的老手,但對linq還是陌生的。 我編寫了以下函數,將數據庫中int的一列更改為新值。 查詢部分工作正常,但是在我更新數據庫中的KeyState之后似乎無法正常工作。 沒有什么變化。 沒有錯誤,也沒有更新。

    public static void UpdateKeySetToDatabase(IChangeTrackableAsSet set, 
        int tableId, State newState)
    {
        try
        {
            using (var c = new SqlConnection(ConnectionString.ConnectionString))
            {
                c.Open();

                List<int> keyList = set.trackedKeys.Select(k => k.KeyId).ToList();

                DataContext dc = new DataContext(c);                      
                Table<TrackedKey> tableKeys = dc.GetTable<TrackedKey>();

                var KeyStates =
                    from k in tableKeys
                    where (keyList.Contains(k.KeyId) && k.TableId == tableId)
                    select k;


                foreach (var k in KeyStates)
                {

                    EventHandling.Logging.CreateTextEvent($"Key {k.ShowKeyAsJson()}");
                    k.StatusOfKey = (int)newState;
                    EventHandling.Logging.CreateTextEvent($"New Key {k.ShowKeyAsJson()}");
                };

                tableKeys.Context.SubmitChanges();

            }
        }
        catch (Exception ex)
        {
            EventHandling.Logging.CreateTextEvent($"linq error {ex.ToString()}");
        }
    }

我認為您應該向實體框架上下文指定實體已更改,以便對其進行更新。

...
k.StatusOfKey = (int)newState;
EventHandling.Logging.CreateTextEvent($"New Key {k.ShowKeyAsJson()}");

dc.Entry(k).State = EntityState.Modified;
...

當執行SaveChanges()方法時,將修改所有對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM