C# SubmitChanges()不';行不通

C# SubmitChanges()不';行不通,c#,linq-to-sql,C#,Linq To Sql,我不知道这段代码有什么问题,这段代码编译成功,但没有更新数据库。我错过了什么吗 DataClassesDataContext db = new DataClassesDataContext(); var query = from p in db.AllPatiences select p; int newID = 1001; foreach (AllPatience patient in query) { patient.Id = newID.ToString()

我不知道这段代码有什么问题,这段代码编译成功,但没有更新数据库。我错过了什么吗

DataClassesDataContext db = new DataClassesDataContext();
var query = from p in db.AllPatiences
            select p;
int newID = 1001;
foreach (AllPatience patient in query)
{
    patient.Id = newID.ToString();
    newID++;
}
db.SubmitChanges();
猜猜,“Id”是您的表的主键吗?如果是这样,我认为L2S不支持主键的更新(我认为这是非常正确的)。您永远不应该注意更改主键的值

如果Id不是您的主键,我不知道:-p.

猜猜,“Id”是您的表的主键吗?如果是这样,我认为L2S不支持主键的更新(我认为这是非常正确的)。您永远不应该注意更改主键的值


如果Id不是您的主键,我就不知道:-p.

我猜您在项目中使用的是基于文件的数据库(.mdf),并且您正在尝试查看该数据库中的表数据。构建项目时,数据库将克隆到bin/debug/或bin/release/目录中,运行的程序将在其中访问数据库。如果查看此版本的文件,而不是加载到VS项目中的文件,您应该会看到更改


如果是这种情况,您应该将数据库文件属性设置为“仅在更新时复制”或“不复制”,以避免它克隆每个生成的数据库。

我猜您在项目中使用的是基于文件的数据库(.mdf),并且您正试图查看该数据库中的表数据。构建项目时,数据库将克隆到bin/debug/或bin/release/目录中,运行的程序将在其中访问数据库。如果查看此版本的文件,而不是加载到VS项目中的文件,您应该会看到更改


如果是这种情况,您应该将数据库文件属性设置为“仅在更新时复制”或“不复制”,以避免它克隆每个生成的数据库。

是在数据库本身中生成的patient.Id吗?可能作为SQL标识字段?
另外,检查dbml文件中字段的SyncOn属性。

数据库本身是否生成了patient.Id?可能作为SQL标识字段?
另外,请检查dbml文件中字段的SyncOn属性。

我发现了问题,对于这样的更新,必须使用主键。我的表没有主键的原因是:我从Excel文件导入了这些数据,所以我没有主键。

我发现了问题,对于这样的更新,必须有主键。我的表没有主键的原因是:我从Excel文件导入了这些数据,所以我没有主键。

您的设置一定有点奇怪-对我来说很有魅力。代码看起来很好-我不认为你的代码是问题所在。你的设置一定有点奇怪-对我来说很有魅力。代码似乎很好-我不认为您的代码是问题所在。不幸的是,您错了:(.我没有使用基于文件的数据库。不幸的是,您错了:(.我没有使用基于文件的数据库。