Как я могу условно скомпилировать свой C# для Моно по сравнению с Microsoft.NET?

Чтобы понять , почему связывает имя таблицы (или столбца), не работает, вы должны понимать, как работают заполнители в подготовленных операциях: они не просто заменяются как строки (соответственно экранированные) , и результат SQL выполнен. Вместо этого СУБД, попросившая «подготовить» заявление, содержит полный план запросов о том, как он будет выполнять этот запрос, включая те таблицы и индексы, которые он будет использовать, которые будут одинаковыми независимо от того, как вы заполняете заполнители.

План для SELECT name FROM my_table WHERE id = :value будет таким же, как вы его замените :value, но похожее подобное SELECT name FROM :table WHERE id = :value невозможно спланировать, потому что СУБД не знает, какую таблицу вы собираетесь выбрать from.

Это не то, что библиотека абстракции, такая как PDO, может или должна работать, либо потому, что она победит две ключевые цели подготовленных операторов: 1) позволить базе данных заранее решить, как запрос будет запущен и будет использовать один и тот же план несколько раз; и 2) для предотвращения проблем безопасности путем отделения логики запроса от ввода переменной.

34
задан Will Dean 1 December 2008 в 13:54
поделиться

1 ответ

Моно компилятор определяет __MonoCS__

, НО, НО, НО , смысл Моно - то, что можно взять блок, который Вы создали с VS и работали на нем Моно, или наоборот.

мне кажется, что, если Вы должны иметь Моно по сравнению с различиями MS.NET, тогда необходимо принимать те решения во времени выполнения.

стандартный способ обнаружить Моно в Runtime:

bool runningOnMono = Type.GetType ("Mono.Runtime") != null;
58
ответ дан Will Dean 11 October 2019 в 06:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: