【问题标题】:Does SQL Server CE require/provide an "UpdateOnSubmit()"?SQL Server CE 是否需要/提供“UpdateOnSubmit()”?
【发布时间】:2012-12-23 23:52:33
【问题描述】:

要在 SQL Server CE 中插入记录,请调用 ..InsertOnSubmit(),传递代表要插入的记录的类实例,然后是 .SubmitChanges();

我是否需要类似的结构来更新记录?我有这个:

SQLCEDataContext sqlcedc = new SQLCEDataContext(SQLCEDataContext.DBConnectionString);
var invitations = (from SQLCEDataDefinition invitation in
                       sqlcedc.SQLCEDataDefinitions
                   where invitation.SenderID == senderID
                   select invitation).SingleOrDefault();
invitations.SenderDeviceID = senderDeviceID;
sqlcedc.SubmitChanges();

..但想知道我是否需要 InsertOnSubmit() 的类似物 - 但我看不到 UpdateOnSubmit()。即使这是更新操作而不是插入操作,我是否需要使用 InsertOnSubmit()?

windows-phone-8 sql-server-ce 更新 linq

【问题讨论】:

    标签: linq-to-sql sql-server-ce sql-update windows-phone-8 insert-update


    【解决方案1】:

    不,您没有 UpdateOnSubmit() 并且您不能使用 InsertOnSubmit() 来更新您的记录。

    您需要先获取数据,更新您的属性,然后使用 SubmitChanges()

    【讨论】:

    • IOW - 就像我正在做的那样,对吧?如果更新时不需要 InsertOnSubmit(),这似乎有点奇怪。
    • 是的,没错。事实上,LINQ to SQL 会自动跟踪更改,因此它已经知道您对通过 DataContext 检索到的对象所做的更改。在 SubmitChanges 期间更新对象的请求是隐含的。
    • 有一个解决方法。看我的回答here
    【解决方案2】:

    试试这样:

       SQLCEDataContext sqlcedc = new SQLCEDataContext(SQLCEDataContext.DBConnectionString);
    var invitations = (from SQLCEDataDefinition invitation in
                           sqlcedc.SQLCEDataDefinitions
                       where invitation.SenderID == senderID
                       select invitation).SingleOrDefault();
    invitations.SenderDeviceID = senderDeviceID;
    sqlcedc.SubmitChanges();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多