2010-12-23 3 views
0

Ich bin immer noch versucht, mich um LINQ zu SQL und Fremdschlüssel Beziehungen zu wickeln.Linq zu SQL Foreign Keys & Collections

Ich habe eine Tabelle namens "Parent" und eine andere namens "Children". Ich habe eine OneToMany-Beziehung, in der ein Elternteil mehrere Kinder haben kann. Mein DBML sieht ungefähr so ​​aus:

<Table Name="" Member="Parents"> 
<Type Name="Parent"> 
    <Column Member="ParentID" Type="System.String" IsPrimaryKey="true" CanBeNull="false" /> 
    <Column Member="ChildID" Type="System.String" CanBeNull="false" /> 
    <Association Name="Parent_Child" Member="Childs" ThisKey="ParentID" OtherKey="ParentID" Type="Child" /> 
</Type> 
</Table> 
<Table Name="" Member="Childs"> 
<Type Name="Child"> 
    <Column Member="ChildID" Type="System.String" IsPrimaryKey="true" CanBeNull="false" /> 
    <Column Member="ParentID" Type="System.String" CanBeNull="false" /> 
    <Association Name="Parent_Child" Member="Parent" ThisKey="ParentID" OtherKey="ParentID" Type="Parent" IsForeignKey="true" /> 
</Type> 
</Table> 

In meinem Code, ich möchte gerne etwas tun:

// parent has already been loaded from the datacontext 
parent.Childs = <some collection of children> 
db.SubmitChanges(); 

Aber wenn ich es tue, dass ich die folgende Fehlermeldung erhalten:

Ein Mitglied Definieren der Identität des Objekts kann nicht geändert werden. Sie können ein neues Objekt mit einer neuen Identität hinzufügen und stattdessen das vorhandene Objekt löschen.

Kann mir jemand sagen, wie man das richtig macht?

+1

Wurden die untergeordneten Datensätze mit dem gleichen Datenkontext oder einem anderen abgerufen? –

+0

Sie wurden aus demselben Datenkontext abgerufen. – Addy

Antwort

2

dies tatsächlich der Fehler von Datacontext ist, ich denke, u mehrere Instanz von Datacontext haben .. gut u nicht jede Einheit Datacontext Hexe hinzufügen kann durch eine andere Instanz von Datacontext bereits geholt wird ... selbst kann u es so indem Sie datacontext.objecttrackingenabled auf false setzen und dann können Sie es zu einem anderen Datenkontext hinzufügen, dann wird es sicher funktionieren ....

+0

Wenn Sie eine neue Entität hinzufügen möchten, stellen Sie sicher, dass die Entität neu ist oder keinen Datenkontext hat –