2015-08-20 17 views
8

Ich verwende Entity Framework 6 mit meinem SQL und scheint wie Zeile Version Byte-Array wird nicht von MySQL unterstützt. jede Hilfe, wie dies erreicht werden kann.Entity Framework 6 Mysql Zeilversion

[Column(TypeName = "timestamp")] 
[DatabaseGenerated(DatabaseGeneratedOption.Computed)] 
public DateTime TimeStamp { get; set; } 
+0

I beschriebenen bin Lösung ** [hier] (http://stackoverflow.com/a/39760766/3278271) ** und bisher kein Problem. Alles funktioniert gut. – Arsenius

Antwort

4

Vor allem, wenn Sie die automatische Migration verwenden denke ich, dass die Eigenschaft Attribute nicht genug sind, den richtigen Feldtyp zu erstellen.
Hier https://dev.mysql.com/doc/refman/5.5/en/timestamp-initialization.html gibt es die Syntax, die EF-Provider generieren sollte, um einen Zeitstempel zu erstellen, der automatisch generiert/aktualisiert wird.

Nach dem richtigen Feldtyp Erstellen Sie 2 versucht tun könnten:

-Mark das Feld als Zeitmarke

[Timestamp] 
public DateTime TimeStamp { get; set; } 

Ich glaube nicht, dass EF muss, dass ein Zeitstempelfeld byte [] ist. Timestamp sollte nur bedeuten, dass Datenbank generierte Feld ist und dass die optimistische Nebenläufigkeit dieses Feld verwenden (d. H. Aktualisierungsabfragen enthält eine wo auf den Schlüsseln des Datensatzes zu aktualisieren und dieses Feld). Aber oft kommt EF nicht arbeiten, wie ich glaube, ...

-Mark Bereich wie Datenbank generiert und als ein Feld für Parallelität Ausnahmen zu überprüfen, um zu verwenden

[ConcurrencyCheck] 
[DatabaseGenerated(DatabaseGeneratedOption.Computed)] 
public DateTime TimeStamp { get; set; }