2016-06-28 14 views
0

, 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> 
+1

Können Sie Ihre TestTabs-Klasse einbeziehen? – chandler

+0

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 –

+0

ein paar Klammern ist für Primärschlüsseldefinition, die andere Tabelle für erstellen - ich Vertiefung modifiziert nur zur besseren Lesbarkeit –

Antwort

0

würde ich diese Dinge überprüfen

  1. Achten Sie darauf, die [Key] auf der testTabs Klasse gesetzt wird

    wird
  2. Stellen Sie sicher, Sie haben nicht zwei verschiedene Instanzen von ABEntities2 (DbContext) zur gleichen Zeit

+0

wurde automatisch eingestellt: ' ' –

0

sieht aus wie das einzige Problem Nutzung von sequence ist, da ich Tabellendefinition

CREATE TABLE [dbo].[testTab] 
(
    [iden] [bigint] identity(1,1) NOT NULL , 
    [name1] [nchar](10) NULL, 
    [name2] [nchar](10) NULL, 
    PRIMARY KEY CLUSTERED 
    (
    [iden] ASC 
    ) 
) ON [PRIMARY] 
  • so habe ich identity statt sequence und neu erstellt Modell

    geändert, funktioniert alles einwandfrei. sequence eingeführt in sql2012 scheint nicht korrekt mit EF6 zu arbeiten.