public class Resource
{
public long Id { get; set; }
public string Name { get; set; } = string.Empty;
public List ResourceRoles { get; set; } = new List();
}
public class ResourceRole
{
public long Id { get; set; }
public long ResourceId { get; set; }
public string Name { get; set; } = string.Empty;
public Resource Resource { get; set; }
}
public class RequestTemplate
{
public long Id { get; set; }
public string Name { get; set; } = string.Empty;
public List AccessSets { get; set; } = new List();
}
public class AccessSet
{
public long Id { get; set; }
public long? RequestTemplateId { get; set; }
public bool IsAccess { get; set; }
public bool IsSuperadmin { get; set; }
public RequestTemplate RequestTemplate { get; set; }
}
Der einzige Unterschied besteht darin, dass ein FK lang ist und ein anderer lang?.
Ich habe ein Problem , das gleiche Szenario funktioniert für ResourceRole und nicht für AccessSet.
Hier ist der Democode:

Ich erhalte eine Ausnahme:
System.InvalidOperationException: „Die Instanz des Entitätstyps „AccessSet“ kann nicht verfolgt werden, da bereits eine andere Instanz mit dem Schlüsselwert „{Id: 7}“ verfolgt wird. Stellen Sie beim Anhängen vorhandener Entitäten sicher, dass nur eine Entitätsinstanz mit einem bestimmten Schlüsselwert angehängt wird.'
Wenn ich ändere
public long? RequestTemplateId { get; set; }
bis
public long RequestTemplateId { get; set; }
dann kann AccessSet reibungslos aktualisiert werden.
Ich bin also verwirrt, warum das gleiche Szenario für LONG funktioniert und funktioniert LANGE nicht?.
Vielen Dank im Voraus!
(Ich freue mich, wenn wir eine Diskussion zu einem ausgewählten Thema überspringen Ansatz zur Aktualisierung verwandter Entitäten in der Datenbank)