C# 4.0/EF - Server-generated-keys und server-generierten Werte werden nicht unterstützt, die von SQL Server Compact
Habe ich nur verschoben in einem meiner Projekte in VS2010/fx4.0 und bin mit einer SQL CE-Datenbank als Zusatzspeicher. Da bewegt es sich auf diese version des .NET I bin jetzt immer diese Fehlermeldung:
Server-generated-keys und server-generierten Werte werden nicht unterstützt, die von SQL Server Compact.
Meinem Tisch war definiert mit einem PK von UserName (string) & DoorOpen (datetime) als SQLCE erforderlich es eine PK auf jedem Tisch in fx3.5. Ich bin jetzt in der fx4.0 ich bin ratlos. Ich habe gegoogelt für diese und jede Antwort, die ich fand, war:
SQLCE nicht unterstützt die automatische Generierung von Werten (welche ich sicherlich nicht benötigen), so setzen Sie eine GUID-ID auf es und füllen Sie es aus code.
Ich habe versucht, diesen Ansatz, und ich bin noch immer der gleiche Fehler!
SQLCE:
CREATE TABLE [ImportDoorAccesses] (
[RawData] nvarchar(100) NOT NULL,
[DoorOpen] datetime NOT NULL,
[UserName] nvarchar(100) NOT NULL,
[CardNumber] bigint NOT NULL,
[Door] nvarchar(4000) NOT NULL,
[Imported] datetime NOT NULL,
[ID] uniqueidentifier NOT NULL -- new column
);
ALTER TABLE [ImportDoorAccesses]
ADD CONSTRAINT [PK_ImportDoorAccesses]
PRIMARY KEY ([ID] );
Den constraint verwendet werden:
ALTER TABLE [ImportDoorAccesses]
ADD CONSTRAINT [PK_ImportDoorAccesses]
PRIMARY KEY ([DoorOpen],[UserName]);
CODE:
foreach (dto.DoorAudit newDoorAudit in dataTransferObject)
{
if (newDoorAudit.DoInsert)
{
myEntities.AddToImportDoorAccesses(new ImportDoorAccess
{
CardNumber = newDoorAudit.CardNumber,
Door = newDoorAudit.Door,
DoorOpen = newDoorAudit.DoorOpen,
Imported = newDoorAudit.Imported,
RawData = newDoorAudit.RawData,
UserName = newDoorAudit.UserName,
ID = Guid.NewGuid() //LOOK - HERE IT IS AS SUGGESTED!
});
}
}
myEntities.SaveChanges();
So, was nun? Ist das ein Fehler EF4? Mache ich etwas falsch?
TIA
HINWEIS:
Gehen durch die EDMX-Datei (Rechte Maustaste, öffnen mit, XML) fand ich, dass einer meiner date-Spalten war mit StoreGeneratedPattern="Identity".
<EntityType Name="ImportDoorAccesses">
<Key>
<PropertyRef Name="ID" />
</Key>
<Property Name="RawData" Type="nvarchar" Nullable="false" MaxLength="100" />
<Property Name="DoorOpen" Type="datetime" Nullable="false" />
<Property Name="UserName" Type="nvarchar" Nullable="false" MaxLength="100" />
<Property Name="CardNumber" Type="bigint" Nullable="false" />
<Property Name="Door" Type="nvarchar" Nullable="false" />
<Property Name="Imported" Type="datetime" StoreGeneratedPattern="Identity" Nullable="false" />
<Property Name="ID" Type="uniqueidentifier" Nullable="false" />
</EntityType>
Ich wechselte dann zurück zu der hübschen model-Ansicht und klickt auf jedes einzelne Spalte in meiner Datenbank, um sicherzustellen, dass dies war NICHT gesetzt. Ein PITA für sicher. Sieht aus wie ein perfektes kleines tool/add-in erstellt werden muss...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die wichtige Sache zu prüfen, ist der EDMX-Datei, und stellen Sie sicher, dass diese Eigenschaft/Spalte nicht StoreGeneratedPattern von Identität gibt.