Ich entwickle mit:
Visual Studio 2010
C#/ .NET 4.0
Microsoft SQL Server 2008
Ich möchte Felder beim Einfügen eines neuen Datensatzes datenbankseitig automatisch setzten lassen (mit der DEFAULT-Klausel).
Ich kann mit Entity Framework aber keine Objekte mit NOT NULL DEFAULT-Eigenschaften erfolgreich einfügen.
Ich bekomme beim Versuch die Änderungen zu übernehmen (SaveChanges()) immer eine UpdateException.
Auch wenn ich im Modell für die entsprechenden Felder die Eigenschaft StoreGeneratedPattern auf Computed oder Identity stelle.
Mein Testszenario:
So habe ich die Tabelle angelegt:
SQL-Anweisung
1: 2: 3: 4: 5: 6: 7:
| CREATE TABLE [Tests] ( [IDX_Tests] int PRIMARY KEY IDENTITY, [Name] nchar(256) NOT NULL, [CreatedAt] datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, [CreatedBy] nchar(256) NOT NULL DEFAULT 'Default User' ); |
Im MyModel.edmx habe ich bei der Tabelle Test für die Felder "CreatedAt" und "CreatedBy" die Eigenschaft
Zitat: |
StoreGeneratedPattern = Computed |
eingestellt. (Im 2. Versuch auch auf Identity gestellt)
In meiner Anwendung versuche ich folgendes:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7:
| MYDBEntities dc= new MYDBEntities();
Test u = new Test(); u.Name = "Max"; u.CreatedAt = DateTime.Now; dc.AddToTests(u); dc.SaveChanges(); |
Bei Zeile 7 bekomme ich die UpdateException mit folgender InnerException:
Zitat: |
{"Der Wert NULL kann in die 'CreatedBy'-Spalte, 'MYDB.dbo.Tests'-Tabelle nicht eingefügt werden. Die Spalte lässt NULL-Werte nicht zu. Fehler bei INSERT.\r\nDie Anweisung wurde beendet."} |
Was mache ich falsch?
Grüße Peter