2016-11-30 6 views
0

Ich habe eine Anwendung, die EntityFramework Code First verwendet, um die Datenbank zu erstellen, wenn sie nicht existiert. Und ich benutze MySQL für die Datenbank-Engine.Erstellen Sie eine VARCHAR BINARY-Spalte in MySQL mit Entity Framework Codefirst

Ich habe eine Tabelle, in der eine der Schlüsselspalten case-sensitive sein muss. Ich möchte nicht die gesamte Datenbank oder Tabelle als Groß- und Kleinschreibung mit Kollation markieren, so ist der beste Weg, um es zu tun (die ich kenne), die Spalte als BINARY zu markieren.

Kann jemand das mit Code First tun? Ich habe versucht zu tun:

[Column(TypeName = "varchar(100) BINARY")] 

aber es mag nicht, dass das erste Mal, dass ich das DB-Modell zugreifen ich

Eine Ausnahme des Typs ‚System.InvalidOperationException‘ aufgetreten in EntityFramework.dll aber in Benutzercode wurde

Zusätzliche Informationen nicht behandelt: Sequenz kein Anpassungselement enthält

Vielleicht soll ich tun, nur ein ALTER TABELLE nachdem die Datenbank erstellt wurde?

Antwort

1

Ich mag nicht die gesamte Datenbank oder Tabelle als Groß- und markieren Sortierung verwendet

Nun, nein, das macht keinen Sinn, aber man sollte es tun auf der Säule der Lage sein, , eine entsprechende Sortierung verwendet wird, zB:

VARCHAR(100) COLLATE utf8_bin 

Oder einfach ...

VARBINARY(100) 

.. .ist perfekt in MySQL gültig (obwohl ich keine Ahnung habe, ob EF es richtig handhaben wird).

http://dev.mysql.com/doc/refman/5.7/en/binary-varbinary.html

+0

Das hatte ich wirklich versucht, nachdem ich die Frage gepostet, leider ist es nicht in meinem Fall nicht funktioniert, weil ich die EF-Eigenschaft benötigen eine Zeichenfolge zu sein, aber dieser Spalt Typ ist nur mit Byte-kompatibel [] –

+0

Well Wenn es binär ist, dann ist es keine Zeichenkette - es sind Bytes -, so dass dieser Teil in einer stark typisierten Umgebung sinnvoll ist. Was ist mit 'VARCHAR (100) COLLATE utf8_bin'? Das sollte eine Zeichenfolge sein, bei der die Groß-/Kleinschreibung beachtet wird. –

+0

Das funktioniert gut, wenn ich die Tabelle manuell erstellen, aber ich suche nach einer Möglichkeit, es mit EntityFramework zu tun –

Verwandte Themen