C# 使用LINQ to SQL更新SQL Server CE表中的记录

C# 使用LINQ to SQL更新SQL Server CE表中的记录,c#,linq,windows-phone-8,sql-server-ce,C#,Linq,Windows Phone 8,Sql Server Ce,我正在为Windows Phone构建类库。正如标题所示,我只想更新SQLServerCE表中的一条记录。我遇到的所有方法都涉及从数据库获取记录、手动更新值,然后将更改刷新回数据库 问题是,我正在建一个图书馆。所以我事先不知道会有哪些专栏。因此,手动更新值是不可能的。我想要一些更简单的方法,比如UpdateOnSync方法,它可以使用如下方式: Contacts.UpdateOnSubmit(contctToUpdate); 其中,联系人是一个表。这有可能吗?显然,SQLite for Win

我正在为Windows Phone构建类库。正如标题所示,我只想更新SQLServerCE表中的一条记录。我遇到的所有方法都涉及从数据库获取记录、手动更新值,然后将更改刷新回数据库

问题是,我正在建一个图书馆。所以我事先不知道会有哪些专栏。因此,手动更新值是不可能的。我想要一些更简单的方法,比如
UpdateOnSync
方法,它可以使用如下方式:

Contacts.UpdateOnSubmit(contctToUpdate);
其中,
联系人
是一个表。这有可能吗?显然,SQLite for Windows Phone、Windows Azure等都有更新方法,它们的风格非常接近LINQ。如何在不手动修改值的情况下更新I记录

更新1:我刚刚运行了以下代码进行测试。它也不起作用

//Get updated items from local to put them in cloud
var newLocalItems = (from TEntity p in localTable
                     where p.LastModified > currentTimeStamp
                     select p).ToList();
foreach (var localItem in newLocalItems)
{
    if (localItem.RemoteId == 0)
    {        
        localItem.LastSynchronized = DateTime.Now;                    
        connection.SubmitChanges();
    }
}
即使手动修改了值,数据库中的行也不会被修改。更新是否仅在获取单个项时有效

以下是我获得连接的方式:

public async void ConfigureSQLCE<T>(T mainDataContext) where T : DataContextBase
{           
    MainDB = mainDataContext; //MainDB is class level dynamic
}
public async void ConfigureSQLCE(T mainDataContext),其中T:DataContextBase
{           
MainDB=mainDataContext;//MainDB是类级动态的
}
下面是GetConnection方法:

private async Task<DataContextBase> GetConnection()
{
    if (!MainDB.DatabaseExists())
    {
        MainDB.CreateDatabase();
    }
    return MainDB;
}
专用异步任务GetConnection()
{
如果(!MainDB.DatabaseExists())
{
MainDB.CreateDatabase();
}
返回MainDB;
}
然后我通过
var connection=await GetConnection()获得
connection
DataContextBase
中不存在上述表格。它存在于一个派生自它的类中。我现在该如何处理这种情况

更新2:手动设置属性,如
localItem.LastSynchronized=DateTime。在我在模型中实现了
INotifyPropertyChanged
后,现在
开始神奇地工作


尽管如此,最初的问题仍然存在,我如何更新项目?

这段代码看起来不错,您是否可以添加一些定义“连接”范围的代码@db42请参见编辑。我在其中进行更新的表不存在于
DataContextBase
中,但它存在于从
DataContextBase
派生的
MainDB
中。那么,当我的
GetConnection
方法返回时,它返回什么?实际所有的
MainDB
MainDB
被削减到
DataContextBase