«Крошка как булева» и Entity Framework 4 - PullRequest
5 голосов
/ 12 июля 2011

У меня есть ситуация, когда мне нужно обрабатывать TINYINT в базе данных MySQL как числовое значение, а не как TRUE / FALSE.

Насколько я понимаю, MySQL .Net Connector использует для сопоставления TINYINT как байта. К сожалению для меня, кажется, что это больше не так, и TINYINT теперь сопоставлен с логическим значением. Мне нужно, чтобы TINYINT и Byte были такими, какими они были. Я знаю, что параметр строки подключения «Лечить крошечное как логическое = ложное» должен решить эту проблему. По некоторым причинам это не работает при использовании Entity Framework. Есть идеи?

1 Ответ

3 голосов
/ 12 июля 2011

Используя проведенное мной исследование и комментарий Дастина Дэвиса, я наконец смог найти решение проблемы.Хитрость заключается в том, чтобы добавить «Tiny As Boolean = False» в строку подключения, а затем отредактировать файл edmx в боте, раздел «Содержимое SSDL» и раздел «Содержимое CSDL».

В SSDL, где вы найдете "bool", замените его на "tinyint", а в CSDL, где вы найдете "Boolean", замените его на "SByte".Вы также можете использовать «int» и «Int32», если хотите;однако я считаю, что MySQL фактически дает вам «SByte».В моей ситуации я читал данные, которые были введены в базу данных через интерфейс доступа, который использует -1 / 0 для True / False.Вот почему мне нужен был SByte.

...