2016-11-30 6 views
0

У меня есть приложение, которое использует EntityFramework Code Сначала для создания базы данных, если она не существует. И я использую MySQL для механизма базы данных.Создайте столбец BARCHAR VARCHAR в MySQL с Entity Framework Codefirst

У меня есть таблица, где одна из столбцов ключа должна быть чувствительной к регистру. Я не хочу отмечать всю базу данных или таблицу как чувствительную к регистру с помощью сопоставления, поэтому лучший способ сделать это (что я знаю) - пометить столбец как BINARY.

Кто-нибудь знает, как это сделать, используя Code First? Я пробовал делать:

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

, но это не нравится, что я в первый раз доступ к модели DB я получаю

Исключение типа «System.InvalidOperationException» произошло в EntityFramework.dll, но не был обработан в пользовательском коде

Дополнительная информация: Последовательность не содержит соответствующий элемент

Может быть, я должен вобще ALTER TABLE после создания базы данных?

ответ

1

Я не хочу, чтобы отметить всю базу данных или таблицу, как чувствителен к регистру, используя параметры сортировки

Ну, нет, это не имеет смысла, но вы должны быть в состоянии сделать это на колонке , используя соответствующий порядок сопоставления, например:

VARCHAR(100) COLLATE utf8_bin 

Или просто ...

VARBINARY(100) 

.. .Особенно корректен в MySQL (хотя я понятия не имею, правильно ли это будет EF).

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

+0

На самом деле я попробовал это после того, как я отправил вопрос, к сожалению, она не работает в моем случае, потому что мне нужно свойство EF быть строкой, но этот тип столбца совместим только с байтом [] –

+0

Ну , если он двоичный, то это не строка - это байты, поэтому эта часть имеет смысл в сильно типизированной среде. Что относительно 'VARCHAR (100) COLLATE utf8_bin'? Это должна быть строка, чувствительная к регистру. –

+0

Это работает отлично, если Im создает таблицу вручную, но Im ищет способ сделать это с помощью EntityFramework –