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...

Schreibe einen Kommentar