, wenn ich eine Sequenz und eine Tabelle wie folgt definieren:Entity Framework 6 nicht Datensatz einfügen
CREATE SEQUENCE [dbo].[seq-test]
AS [bigint]
START WITH 0
INCREMENT BY 1
MINVALUE -9223372036854775808
MAXVALUE 9223372036854775807
CACHE
GO
CREATE TABLE [dbo].[testTab]
(
[iden] [bigint] NOT NULL DEFAULT (NEXT VALUE FOR [seq-test]),
[name1] [nchar](10) NULL,
[name2] [nchar](10) NULL,
PRIMARY KEY CLUSTERED
(
[iden] ASC
)
) ON [PRIMARY]
und dann versuchen, Daten einzufügen EF mit 6:
testTab d = new testTab();
d.name1 = "sss";
using (var db = new ABEntities2())
{
db.testTabs.Add(d);
db.SaveChanges();
}
und ich gesetzt StoreGeneratedPattern
zu Identity
für iden
Spalte, verhält es nicht, wie es sollte, durch SaveChanges
geworfen Ausnahme DbUpdateConcurrencyException
ist:
Die Anweisung zum Aktualisieren, Einfügen oder Löschen von Speichern hat eine unerwartete Anzahl von Zeilen (0) beeinflusst. Entitäten wurden möglicherweise geändert oder gelöscht, seit Entitäten geladen wurden. Aktualisieren Sie die ObjectStateManager-Einträge.
was mache ich falsch?
erzeugt testTabs:
<EntitySetMapping Name="testTabs">
<EntityTypeMapping TypeName="ABModel.testTab">
<MappingFragment StoreEntitySet="testTab">
<ScalarProperty Name="iden" ColumnName="iden" />
<ScalarProperty Name="name1" ColumnName="name1" />
<ScalarProperty Name="name2" ColumnName="name2" />
</MappingFragment>
</EntityTypeMapping>
</EntitySetMapping>
Können Sie Ihre TestTabs-Klasse einbeziehen? – chandler
Ich denke, Sie haben beim Erstellen eine unerwünschte Klammer eingefügt. ( [Iden] ASC ) EIN [PRIMÄR]. Es gab eine doppelte Schließung. Aber eine einzige Öffnung –
ein paar Klammern ist für Primärschlüsseldefinition, die andere Tabelle für erstellen - ich Vertiefung modifiziert nur zur besseren Lesbarkeit –