Выполнить хранимую процедуру с параметром по умолчанию - PullRequest
1 голос
/ 23 марта 2019

Мне нужно использовать хранимую процедуру с тремя параметрами. Второй параметр является значением по умолчанию. Мне не разрешено изменять хранимую процедуру. Когда я пытаюсь выполнить хранимую процедуру, используя Entity Framework, я передаю первый и третий параметры. И я получаю сообщение об ошибке, что третий параметр не предоставляется.

Это подпись хранимой процедуры:

[dbo].[sp_CreateTest] 
      @Par1 NVARCHAR(25),
      @Par2 NVARCHAR(50) = 'Test',
      @Par3 NVARCHAR(50)

Я пытаюсь выполнить это так:

List<SqlParameter> parameters = new List<SqlParameter>();
parameters.Add(new SqlParameter("@Par1", "Parameter1 data"));
parameters.Add(new SqlParameter("@Par3", "Parameter3 data"));

testEnt.Database.ExecuteSqlCommand("exec dbo.sp_CreateTest @Par1, @Par3", parameters.ToArray());

Ответы [ 3 ]

1 голос
/ 23 марта 2019

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

testEnt.Database.ExecuteSqlCommand("exec dbo.sp_CreateTest @Par1=@Par1, @Par3=@Par3", parameters.ToArray());
1 голос
/ 23 марта 2019

вы можете использовать «По умолчанию» в качестве параметра вместо второго параметра. т.е.

"exec dbo.sp_CreateTest @ Par1, DEFAULT, @ Par3"

0 голосов
/ 23 марта 2019

Пример:

 public class BlogContext : DbContext
 {

 public DbSet<Post> Posts { get; set; }

 public BlogContext(DbContextOptions<BlogContext> options) : base(options)
 {
 }

 protected override void OnModelCreating(ModelBuilder modelBuilder)
 {
     base.OnModelCreating(modelBuilder);

     modelBuilder.Entity<Post>().Property(p => p.Text).HasDefaultValue("Default");
 }

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...