我有一個標準的更新通過linq到sql發生,但數據不會持久到數據庫。Linq到Sql更新不會持久到數據庫
我通過.dbml文件設計師使用自動生成的類。
UPDATE語句如下:
public static void UpdateEmailsInWorkingTable(Guid emailGuid, string modifiedEmail)
{
using (EmailDBDataContext DBContext = new EmailDBDataContext())
{
EmailAddress_Update EAUpdated = (from e in DBContext.EmailAddress_Updates
where e.EmailGuid == emailGuid
select e).SingleOrDefault();
EAUpdated.EmailAddress = modifiedEmail;
EAUpdated.IsValid = 'Y';
EAUpdated.UpdateFlag = true;
EAUpdated.LastChangedDtTm = DateTime.Now;
try
{
DBContext.SubmitChanges(ConflictMode.FailOnFirstConflict);
}
catch (ChangeConflictException ex)
{
// do stuff here
}
}
}
我看遍了我的自動生成的DataContext類,唯一明顯的區別是,有問題的表EmailAddress_Update沒有實現這兩個接口INotifyPropertyChanging和INotifyPropertyChanged的,其他自動生成的實體。
我假設,這是爲什麼所做的更改不會被持久化的原因是它不???
簡單地說沒有擴展方法的定義爲這一類的任何部分獲取生成。如果這是我的問題的原因,數據庫中的什麼會導致這不會自動生成正確?
謝謝〜
在你的try catch塊中是EmailDBContext假設是DBContext? – 2010-01-08 00:51:13
對不起,我修改了它,並忘記在那裏修改它 - 這不影響原始問題,只是我的一個錯字。 – 2010-01-08 16:20:12
如果你調用'SingleOrDefault',你最好處理'EAUpdated'可以是空指針的事實。如果你不想處理空情況,那麼你應該調用'Single'。 – 2010-01-08 18:39:28