問題:因為每次更新的時候只是某個類的一部分,但是這個類的屬性比較多.
更新函式如下
static void updatere(log n)}}
staticvoidmain(stringargs)
這時候產生的sql如下
select [t0].[logid], [t0].[logmessage], [t0].[x]
from [dbo].[log] as [t0]
where [t0].[logid] = @p0
-- @p0: input int (size = 0; prec = 0; scale = 0) [1]
update [dbo].[log]
set [logmessage] = @p1, [x] = @p2
where [logid] = @p0
-- @p0: input int (size = 0; prec = 0; scale = 0) [1]
-- @p1: input varchar (size = 4; prec = 0; scale = 0) [***x]
-- @p2: input nchar (size = 10; prec = 0; scale = 0) [null]
問題就是這樣做會將你沒有符過值的都更新為null,我繼續做實驗,將main函式改為如下
staticvoidmain(stringargs)
會引發"已嘗試 attach 或 add 實體,該實體不是新實體,可能是從其他 datacontext 中載入來的。不支援這種操作。"異常,沒找到把n1從它的datacontext脫離的辦法.所以我使用如下的解決方案:
在log的部分類中書寫轉殖方法:
publicpartialclasslog
}staticvoidmain(stringargs)
生成的sql語句如下
select [t0].[logid], [t0].[logmessage], [t0].[x]
from [dbo].[log] as [t0]
where [t0].[logid] = @p0
-- @p0: input int (size = 0; prec = 0; scale = 0) [1]
update [dbo].[log]
set [logmessage] = @p1
where [logid] = @p0
-- @p0: input int (size = 0; prec = 0; scale = 0) [1]
-- @p1: input varchar (size = 4; prec = 0; scale = 0) [***y]
感覺這個clone()方法也不是好的解決方案,大家有什麼好的想法麼?
網友:@gray zhang 的這個方法我覺得不錯,整理如下:
staticvoidupdate(intid,actionupdater)
}publicstaticvoidset(logl)
staticvoidmain(stringargs)
linq更新部分資料時遇到的問題及解決辦法
問題 因為每次更新的時候只是某個類的一部分,但是這個類的屬性比較多.更新函式如下 static void updatere log n updatere n1 static void main string args 會引發 已嘗試 attach 或 add 實體,該實體不是新實體,可能是從其他 d...
poi批量匯入資料時部分資料丟失
解決思路 debug 發現physicalnumberofcells代表的單元格數量與 列數不符,這就意味著最後兩列的單元格根本沒有讀取到。查閱資料 發現獲取單元格列數使用的是getphysicalnumberofcells方法,而該方法讀取的是不為空的單元格總列數,恰好匯入的 中有兩列為空的單元格...
關於從遠端取資料更新到本地時遇到的時間問題
近日部署了乙個從遼寧招辦取瀋陽的資料的乙個專案,取回來的資料中有時間字段,奇怪的現象是,只要是從瀋陽取得的時間,更新到遼寧的時候,肯定會慢13個小時,百思不得其解.讓手下用各種方法去找原因,得知 1.從瀋陽本地的資料庫直接讀出來的資料沒有問題 2.從北京取瀋陽的資料沒有問題 3.資料一到遼寧就變 從...