Вызов хранимой процедуры в Entity Framework Core с параметрами, которые не начинаются с @ или # - PullRequest
0 голосов
/ 24 июня 2019

Я пишу слой данных на основе ef-core 2.2, который должен быть совместим с SqlServer и Oracle.

При вызове SP со сложным форматом данных (например, двоичным) или выходными параметрами необходимо создать экземпляр SqlParameter. Имя параметра начинается с @ или #, в зависимости от типа выбранной базы данных.

Как избежать использования префикса @ или # для совместимости базы данных?

Спасибо.

1 Ответ

0 голосов
/ 24 июня 2019

К сожалению, в SQL вы должны использовать @, но в Oracle вы можете удалить его. Работа с заполнителями параметров Синтаксис для заполнителей параметров зависит от источника данных. Поставщики данных .NET Framework по-разному обрабатывают именование и указание параметров и заполнителей параметров. Этот синтаксис настраивается для конкретного источника данных, как описано в следующей таблице.

System.Data.SqlClient   Uses named parameters in the format @parametername.

System.Data.OleDb   Uses positional parameter markers indicated by a question mark (?).

System.Data.Odbc    Uses positional parameter markers indicated by a question mark (?).

System.Data.OracleClient    Uses named parameters in the format :parmname (or parmname).

Вы можете найти общее описание по этой ссылке

https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/configuring-parameters-and-parameter-data-types?view=netframework-4.8#working-with-parameter-placeholders

...