nam
nam

Reputation: 23749

DbParameterCollection does not contain a definition for AddWithValue

Getting above error on the last line of the following code. I'm using EF Core 1.1. Trying to follow this suggestion.

using Microsoft.EntityFrameworkCore;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Data.SqlClient; //Visual Studio had greyed out this line suggesting this as unnecessary.

var conn = _context.Database.GetDbConnection();

var cmd = conn.CreateCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "MySproc";
cmd.Parameters.AddWithValue("@MyParameter", 42);

Upvotes: 3

Views: 6675

Answers (3)

Sukhminder Sandhu
Sukhminder Sandhu

Reputation: 885

In dotnet core 3+ running command is broken. To fix it, change System.Data.SqlClient to Microsoft.Data.SqlClient

Upvotes: 1

bricelam
bricelam

Reputation: 30375

Here's the equivalent code using just the System.Data.Common APIs. (It can be used with any ADO.NET provider.)

var parameter = cmd.CreateParameter();
parameter.ParameterName = "@MyParameter";
parameter.Value = 42;

cmd.Parameters.Add(parameter);

Upvotes: 18

H. Herzl
H. Herzl

Reputation: 3228

Add reference for System.Data.SqlClient and cast your DbConnection instance to SqlConnection.

Upvotes: 4

Related Questions