8 Stimmen

Entity Framework: Spalte muss gemappt werden, obwohl sie einen Standardwert hat?

Ich versuche, ein Entity Framework 4-Modell auf der Grundlage einer alten SQL Server 2008-Datenbank zu erstellen. Da das Modell in einem Webdienst veröffentlicht werden soll, muss ich eine Integer-Spalte namens NewsletterSubscribed aus einer der Entitäten des Modells weglassen.

Nach dem Entfernen der Spalte im EF-Designer erhielt ich den folgenden Kompilierungsfehler:

Error   59  Error 3023: Problem in mapping fragments starting at line 356:Column Users.NewsletterSubscribed in table Users must be mapped: It has no default value and is not nullable.
    C:\Users\Adrian\Documents\Sites\Zeiterfassung\Zeiterfassung\API\V1\EFModel.edmx 357 15  Zeiterfassung

Aber die Spalte scheint einen Standardwert von 0 zu haben, der an sie gebunden ist. Ich habe versucht, diese SQL-Anweisung in der Datenbank auszuführen:

ALTER TABLE [dbo].[Users] ADD  DEFAULT ((0)) FOR [NewsletterSubscribed]

Aber auch das scheitert:

Msg 1781, Ebene 16, Zustand 1, Zeile 3 Spalte ist bereits mit einem DEFAULT gebunden gebunden. Msg 1750, Ebene 16, Zustand 0, Zeile 3 Konnte keinen Constraint erstellen. Siehe vorherige Fehler.

Also entweder hat die Spalte keinen Standardwert (in diesem Fall bin ich mir nicht sicher, warum ich keinen erstellen kann), oder Entity Framework sieht sie nicht. Was ist hier los?

Gracias,

Adrian

12voto

Julien Lebosquain Punkte 39679

Öffnen Sie die .edmx-Datei mit dem XML-Editor von Visual Studio und nicht mit dem Entity Designer, und fügen Sie eine DefaultValue="0" Attribut auf die nicht zugeordnete Spalte in der SSDL. Aus bestimmten Gründen werden diese nicht aus der Datenbank generiert.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X