Frage

Ich erstellung eine ASP.NET-MVC4-Site mit Entity Framework 5 mit CodeFirst und SQL Server Express 2012.

Ich habe Migrationen aktiviert und tun dies jetzt in meiner Konfiguration. (Beachten Sie, dass ich den Primärschlüssel auf 8 einstellen möchte, obwohl dies der erste Datensatz in der Datenbank ist).

generasacodicetagpre.

Mein Modellobjekt ist so definiert:

generasacodicetagpre.

Dies führt zu einer Tabelle in (SQL Server Express 2012), in der die ID-Spalte Identity= True, Identity Samen= 1, Identitätsinkrement= 1.

hat

Nun, wenn ich Migrationen durchführen kann, indem ich einen generationspoDiCETAGCODE-Ergebnis in einer Zeile mit id= 1 erfordern kann.

also meine frage sind:

1) Wie kann ich die Werte der automatisch inkrementierten Primärtasten beim Säen von Daten steuern.

2) Wenn die Lösung den Kennwert der Schlüsselspalten inkrementieren soll, woher ist dies, wenn ich PM> Update-Database verwende. Dadurch wird die Datenbank jedes Mal, wenn ich die Datenbank aktualisiere, neu erstellt, und wie würde der Samenwert in der neuen Datenbank aktualisiert werden?

War es hilfreich?

Lösung

Erstellen Sie einfach Dummy-Entitäten mit Standardwerten, fügen Sie dann Ihre echten Daten hinzu und danach löschen Sie die Dummies.Nicht der beste Weg, aber ich denke, es gibt keinen anderen ...

Andere Tipps

Haben Sie versucht, dies auf Ihrer ID-Eigenschaft hinzuzufügen:

generasacodicetagpre.

It seems you are trying to defeat the purpose of an identity column. If you want to do this your only choice is to use SQL Commands Set IDENTITY_INSERT to allow you to insert the value and then run DBCC CHECKIDENT to update the seed. Not a really good idea. These options have security and performance limitations.

You may want to consider using a GUID instead. You can create GUIDs in code which are guaranteed to be unique, and you can also generate GUIDs in SQL as a column default.

With GUIDs, which are non sequential you will need to think through a good indexing strategy. This approach is also debatable.

Ultimately, it looks like you need a different strategy other than using an Identity Column.

It is very hackish, but I ran into a scenario where I had to do it due to some report having hard-coded PK values. Fixing the reports was beyond my scope of work.

Context.Database.ExecuteSqlCommand("SET IDENTITY_INSERT dbo.ProductCategoryDto ON " +
     "INSERT INTO dbo.ProductCategoryDto (Id, Name) VALUES (8, 'category1') " +
     "SET IDENTITY_INSERT dbo.ProductCategoryDto OFF");
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top