C# 成员的值';字段名';类型为';表名';改变。无法更改定义对象标识的成员
我和ARTIEST_JAAR有一张桌子。(在SQL Server 2008中)。 我想改变JAAR_TM的值。我错了什么 这是发生的例外情况: “ARTIEST_JAAR”类型对象的成员“JAAR_TM”的值已更改。 无法更改定义对象标识的成员。 考虑添加具有新标识的新对象,并删除现有的对象。C# 成员的值';字段名';类型为';表名';改变。无法更改定义对象标识的成员,c#,linq-to-sql,C#,Linq To Sql,我和ARTIEST_JAAR有一张桌子。(在SQL Server 2008中)。 我想改变JAAR_TM的值。我错了什么 这是发生的例外情况: “ARTIEST_JAAR”类型对象的成员“JAAR_TM”的值已更改。 无法更改定义对象标识的成员。 考虑添加具有新标识的新对象,并删除现有的对象。 感谢此列是一个标识,它是一个自动递增生成的值,无法手动设置。如果不需要,可以从中删除标识。我没有自动递增字段。这既不是主键,也不是主键。ID_ARTIEST和JAAR_VAN字段设置为主键。可能您的模型不
感谢此列是一个标识,它是一个自动递增生成的值,无法手动设置。如果不需要,可以从中删除标识。我没有自动递增字段。这既不是主键,也不是主键。ID_ARTIEST和JAAR_VAN字段设置为主键。可能您的模型不正确。你能检查一下模型中这个列的定义吗?好的,模型中的定义是错误的。但我可以更改SQL Server的PK字段值?!您可以在LINQ中更改它的原因是什么?我假设这是不允许的,因为在LINQ中更改PK会将实体状态更改为“新”。我不确定在您更改PK时Sql Server是否正在删除和创建新行。
public void OpslaanJarenActief(int AID_Artiest, int AJaar_Van, int AJaar_Tm)
{
string sMethodName = "OpslaanJarenActief";
var qryJarenActief = (from a in FDatabeheer.DataContext.ARTIEST_JAARs
where a.ID_ARTIEST == AID_Artiest
&& a.JAAR_VAN == AJaar_Van
select a).SingleOrDefault();
if (qryJarenActief == null)
{
.... then insert....
}
else
{
try
{
qryJarenActief.ID_ARTIEST = AID_Artiest;
qryJarenActief.JAAR_VAN = AJaar_Van;
qryJarenActief.JAAR_TM = AJaar_Tm;
qryJarenActief.DATUM_MUTATIE = DateTime.Today;
FDatabeheer.DataContext.SubmitChanges();
}
catch (Exception ex)
{
FLogboek.WriteFoutNaarLogboek(FClassName, sMethodName, "Systeemfout", ex.Message);
}
}
}