![](/img/trans.png)
[英]SubmitChanges not updating, but inserts new record. LINQ to SQL
[英]LINQ: SubmitChanges() not updating my record
這里聽起來不像是破記錄(有幾篇帖子看起來像這樣),但似乎沒有一個解決我的問題。 看來,當您要更新時
private bool resetPassword(string password)
{
try
{
var db = new SchedulerDBDataContext();
// since this is a instance method, I grab the ID from _this_
AdminUser user = db.AdminUsers.SingleOrDefault(t => t.ID == _ID);
if (user != null)
{
// this method DOES update these two fields.
SchedUtil.md5Hash(password, ref user._EncryptedPassword, ref user._PasswordSalt);
// I threw these in there to try something... it didn't work.
//user._EncryptedPassword = user.EncryptedPassword;
//user._PasswordSalt = user.PasswordSalt;
// this DOESN'T do anything.
db.SubmitChanges();
return true;
}
return false;
}
catch (Exception)
{
return false;
}
}
也許這是一個愚蠢的問題,但是我正在從數據庫中檢索this
……為什么不僅僅更新this
的屬性。 我猜想我需要通過DBContext
將其拉出。
您應該設置公共屬性,而不是私有值。
// I threw these in there to try something... it didn't work.
//user._EncryptedPassword = user.EncryptedPassword;
//user._PasswordSalt = user.PasswordSalt;
這不會觸發任何更新。
即使您這樣做:
user.EncryptedPassword = user._EncryptedPassword;
user.PasswordSalt = user._PasswordSalt;
這不會觸發任何更改,因為您實際上並未更改值
你可以做點什么
string newEncryptedPassword;
string newPasswordSalt;
SchedUtil.md5Hash(password, ref newEncryptedPassword, ref newPasswordSalt);
user.EncryptedPassword = newEncryptedPassword;
user.PasswordSalt = newPasswordSalt;
還要檢查您的表是否具有主鍵,否則Linq將不會跟蹤更改。
DJ,
你確定嗎
user._EncryptedPassword ,
user._PasswordSalt
是屬性嗎? 我認為您LINQ TO SQL創建公共和私有屬性。
你可以設置它們嗎
user.EncryptedPassword ,
user.PasswordSalt
像這樣 ?
維德
要對代碼進行故障排除,請嘗試以下任何建議:
Ved指出了一個可能的問題。 萬一這行不通,您應該仔細檢查LINQ to SQL類的AdminUser
類定義,並確保生成的代碼實現INotifyPropertyChanging
和INotifyPropertyChanged
接口。 在某些情況下,設計人員將不會實現這些接口,從而阻止更新工作。 例如,不聲明主鍵。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.