0

要在SQL Server CE中插入一条记录,需要调用..InsertOnSubmit(),传递表示要插入记录的类实例,然后传递.SubmitChanges();SQL Server CE是否需要/提供“UpdateOnSubmit()”?

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

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(),即使这是一个更新操作,而不是插入操作?

窗口电话-8的SQL服务器CE更新LINQ

回答

2

不,你没有一个UpdateOnSubmit(),你不能使用InsertOnSubmit()来更新您的记录。

您需要首先获取数据,更新你的财产,然后使用的SubmitChanges()

+0

督察 - 就像我做的话,对不对?如果更新时不需要InsertOnSubmit(),似乎有点奇怪。 –

+0

是的,没错。事实上,LINQ to SQL会自动更改跟踪,因此它已经知道您对通过DataContext检索到的对象所做的更改。暗示在SubmitChanges期间更新对象的请求。 – Fabrice

+0

有一个解决方法。看到我的答案[这里](http://stackoverflow.com/a/40754837/450913)。 – orad

1

尝试这样的:

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(); 
+0

没有UpdateOnSubmit() - 我试过了。 –