2016-08-09 4 views
0

Ich bin mit Entity Framework Datenbank First-AnsatzEigenschaft 'StoreGeneratedPattern' auf 'Berechnet' wird nicht unterstützt. Verwenden ‚Identität‘ Muster

Ich habe eine Tabelle auf ID zusammengesetzte Primärschlüssel mit (int, Identität Schritt), HashKey (binär) automatisch generierte basierend auf mehreren Säulen sql Hashbytes.

Es folgt EF Spaltenzuordnung

ID storeGeneratedPattern = "Identität" und Hashkey (binär) storeGeneratedPattern = "Computed".

Wenn ich versuche, mit der Methode "EF save changes" zu speichern, wird die Ausnahme ausgelöst.

„Änderungen an Tabellen, in denen eine Primärschlüsselspalte hat die Eigenschaft‚StoreGeneratedPattern‘auf‚Berechnete‘werden nicht unterstützt Verwenden Sie‚Identität‘Muster statt Schlüsselspalte:...‚HashKey‘Table“

I beantragt haben Composite-Primärschlüssel für diese Spalten (Id, Hashkey), um die Suche schneller zu machen, da sie den Cluster-Index enthält. Aber nicht sicher, ob EF dies unterstützt.

Ich habe den folgenden Link gesehen. Aber ich bin mir nicht sicher über die Lösung.

Property with StoreGeneratedPattern set to Identity is not updted after SaveChanges()

Kann jemand dazu helfen, das Problem zu beheben.

Antwort

0

"Berechnet" bedeutet, dass EF erwartet, dass SQL den Wert nach jedem Einfügen/Aktualisieren generiert. Daher macht es keinen Sinn, dass es Teil der PK ist.

Sie können einfach die Identität als PK lassen und trotzdem einen Clustered-Index mit Spalten (ID, Hash) erstellen.

Damit ist es auch nicht sinnvoll, eine berechnete Spalte in einen Clustered-Index aufzunehmen. Jedes Mal, wenn die berechnete Spalte geändert wird, muss die gesamte Zeile an die neue Position verschoben werden.

Verwandte Themen