Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 成员的值';字段名';类型为';表名';改变。无法更改定义对象标识的成员_C#_Linq To Sql - Fatal编程技术网

C# 成员的值';字段名';类型为';表名';改变。无法更改定义对象标识的成员

C# 成员的值';字段名';类型为';表名';改变。无法更改定义对象标识的成员,c#,linq-to-sql,C#,Linq To Sql,我和ARTIEST_JAAR有一张桌子。(在SQL Server 2008中)。 我想改变JAAR_TM的值。我错了什么 这是发生的例外情况: “ARTIEST_JAAR”类型对象的成员“JAAR_TM”的值已更改。 无法更改定义对象标识的成员。 考虑添加具有新标识的新对象,并删除现有的对象。 感谢此列是一个标识,它是一个自动递增生成的值,无法手动设置。如果不需要,可以从中删除标识。我没有自动递增字段。这既不是主键,也不是主键。ID_ARTIEST和JAAR_VAN字段设置为主键。可能您的模型不

我和ARTIEST_JAAR有一张桌子。(在SQL Server 2008中)。 我想改变JAAR_TM的值。我错了什么

这是发生的例外情况:

“ARTIEST_JAAR”类型对象的成员“JAAR_TM”的值已更改。 无法更改定义对象标识的成员。 考虑添加具有新标识的新对象,并删除现有的对象。


感谢

此列是一个标识,它是一个自动递增生成的值,无法手动设置。如果不需要,可以从中删除标识。我没有自动递增字段。这既不是主键,也不是主键。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);
        }
    }
}