2009-10-30 61 views
0

我有一個數據庫,我已經從位於我的SQL Server Pro實例上的bak文件在SqlExpress上恢復。我正在使用Linq與數據庫交互,並能夠查詢和更新我的一些表(我還沒有嘗試過所有)。但是,我至少有一個表不接受任何類型的更新(我的UserAddress表)。如果我運行此查詢SQL Server表未用LINQ更新

  TestDataContext td = new TestDataContext(); 
      UserAddress ua = (from u in td.UserAddresses 
           where u.UserID == 56 
           select u).Single(); 
      ua.Address1 = "ffffffffffffuuuuuuuuuuu"; 
      td.SubmitChanges(); 

沒有任何反應。數據庫中沒有提交的文本,沒有例外,沒有任何內容。這是我的連接字符串(數據源= SNEE \ SQLEXPRESS;初始目錄= UsersDatabase;集成安全性= True),儘管我已經使用SQL身份驗證嘗試過它並收到相同的結果。其他人有沒有經歷過這樣的事情?如果是這樣,你做了什麼來讓它起作用?

編輯1 經過在設計師周圍挖掘我注意到一些奇怪的東西。地址類看起來像這樣

[Table(Name="dbo.UserAddress")] 
public partial class UserAddress 

但是我的用戶類看起來像這樣

[Table(Name="dbo.User")] 
public partial class User: INotifyPropertyChanging, INotifyPropertyChanged 

我也注意到,擴展方法的定義是爲用戶而不是UserAddress定義。是什麼賦予了?我確定這是我的問題的根源,但爲什麼會發生這種情況。我嘗試創建一個測試數據上下文,並將表拖放到它上面,但它仍然不會創建必要的代碼。

回答

0

您可以跟蹤查詢以查看L2S的生成情況嗎?那個查詢是什麼樣子的?你可以通過直接在SSMS中執行更新來獲得更新嗎?

是否還有其他外部影響?在TRIGGER阻止更新之前,我看到過這個問題。

0

嘗試:

TestDataContext td = new TestDataContext(); 
      UserAddress ua = (from u in td.GetTable<UserAddresses>() 
           where u.UserID == 56 
           select u).Single(); 
      ua.Address1 = "ffffffffffffuuuuuuuuuuu"; 
      td.SubmitChanges(); 
1

我沒有對錶,我想在我的數據庫實例更新主鍵設置。因此,Linq沒有創建處理該實體類的插入,更新和刪除函數的擴展性方法。感謝您的回覆。