EnforceConstraint auf Datatable
Auf ein dataset ist eine EnforceConstraints Eigenschaft, die angibt, ob die Einschränkungen aktiviert werden soll. Obwohl eine datatable auch können Einschränkungen kann ich nicht deaktivieren Sie die Einschränkungen für eine datatable.
Meinem Fall ist, dass ich datatable, welches ich in Erinnerung mit ein uniqueconstraint auf eine der Spalten. Manchmal möchte ich deaktivieren Sie vorübergehend die unique-Einschränkung. Wie kann ich dies tun? Das einzige, was ich kam mit ist das entfernen und neu-hinzufügen der Einschränkung. Gibt es einen besseren Weg?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es keine öffentlichen
EnforceConstraints
Eigenschaft aufDataTable
. Ich schlage vor, Sie eine der folgenden Methoden deaktivieren Einschränkungen:DataTable.BeginLoadData()
und dannDataTable.EndLoadData()
zu reaktivieren Sie wieder.DataSet.EnforceConstraints
auf false.Hinweis: das Deaktivieren der überprüfung der constraints deaktiviert auch die überprüfung der Werte hinsichtlich
DataColumn.AllowDBNull
undDataColumn.MaxLength
.Meine Lösung ist diese
Im Grunde das, was ich getan habe ist, eine Schleife durch die contrains und entfernen Sie Sie. Machen Sie die Aktion und re-fügen Sie die Einschränkungen in der Tabelle
Können Sie die Verwendung von constraints zu erzwingen Beschränkungen auf die Daten in einem DataTable, um die Integrität der Daten. Einschränkungen werden angewendet, wenn der
System.Data.DataSet.EnforceConstraints
Eigenschaft desDataSet
wahr ist.Gibt es zwei Arten von Einschränkungen in ADO.NET: die
ForeignKeyConstraint
und UniqueConstraint. Standardmäßig sind beide Einschränkungen werden automatisch erstellt, wenn Sie erstellen eine Beziehung zwischen zwei oder mehr Tabellen durch hinzufügen einerDataRelation
zu denDataSet
. Allerdings können Sie dieses Verhalten deaktivieren, indem Sie angebencreateConstraints = fals
beim erstellen der relation.Wenn es Daten in der datatable, wenn Sie es laden, kann eine Ausnahme geworfen werden.
Auf sicher zu spielen, löschen Sie den datatable-vor dem laden ist es so:
Dieser arbeitete für mich 🙂