Я использую dapper для доступа к SQL Server 2016. У меня есть таблица под названием Country с идентификатором автоинкремента, кодом и меткой. Чтобы добавить новую страну у меня есть хранимая процедура, описанные ниже в моей базе данных:Вставить идентификатор и специальное сообщение об ошибке из хранимой процедуры SQL Server
CREATE PROCEDURE [dbo].[AddNewCountry]
(
@Code varchar (50),
@Label varchar (50)
)
AS
BEGIN
INSERT INTO Country
VALUES(@Code,@Label)
END
я вызвать хранимую процедуру из хранилища:
public class EmpRepository
{
public SqlConnection con;
private void connection()
{
string constr = ConfigurationManager.ConnectionStrings["SqlConn"].ToString();
con = new SqlConnection(constr);
}
//To Add Employee details
public void AddCountry(CountryModel objCountry)
{
try
{
connection();
con.Open();
con.Execute("AddNewCountry", objCountry, commandType: CommandType.StoredProcedure);
con.Close();
}
catch (Exception ex)
{
throw ex;
}
}
Если я пытаюсь добавить страну, код которого уже существует I хотел бы указать конкретное сообщение об ошибке как «Страна уже существует» из хранимой процедуры.
Если страна добавлена, я бы хотел свернуть auto-incremented id.
Так что если кто-то знает, как отправить объект с идентификатором и ErrorMessage из хранимой процедуры, пожалуйста, скажите мне.
Посмотрите на [RAISERROR] (https://msdn.microsoft.com/en-us/library/ms178592.aspx), который будет бросать исключение приложения к клиент. Вы можете указать параметры для вставки в строку ошибки, чтобы вы могли заполнить ее с помощью [SCOPE_IDENTITY] (https://msdn.microsoft.com/en-us/library/ms190315.aspx), которая будет содержать идентификатор с автоматическим увеличением , Хотя вы бы хотели, чтобы исключение, когда оно преуспевало, вне меня, вы должны просто вернуть значение. –
Не используйте исключения для вещей, которые вы можете легко проверить в коде. Исключения основаны главным образом на вещах, которые вы не можете контролировать, например, сетевых ошибок и т. Д. ». Просто проверьте, существует ли значение в таблице. Вы можете использовать выходные параметры, чтобы указать, не завершилась или не удалась хранимая процедура. –
Я никогда не говорил boolean ... вы можете вернуть значение int и текстовое значение. Я сейчас не рядом с компьютером, поэтому я не могу показать вам какую-нибудь треску. –