2009-10-30 29 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没有创建处理该实体类的插入,更新和删除函数的扩展性方法。感谢您的回复。