Dapper: debe declarar la variable escalar en el comando Seleccionar

c# dapper sql

Pregunta

La siguiente consulta

Connection.Query<User>("select * from User where Login=@login and Passwd=@passwd", new { login = _login, passwd=_passwd})

devuelve el siguiente error

Debe declarar la variable escalar @login

El modelo de usuario:

public class User
{
    public int Id { get; set; }

    public string Login { get; set; }

    public string Passwd { get; set; }
}

ACTUALIZAR:

Mi problema provenía de la conexión SQL

Mi cadena de conexión era

new OleDbConnection(@"Provider=sqloledb;Data Source=MYPC\SQLEXPRESS;Initial Catalog=MYDB;User Id=sa;Password=****;");

Lo he cambiado a

new SqlConnection(@"Data Source=MYPC\SQLEXPRESS;Initial Catalog=MYDB;User Id=sa;Password=****;");

Respuesta popular

Probado con SQL Server, parece estar funcionando bien:

[Test]
public void simple_select_test()
{
    using (var conn = new SqlConnection(@"Data Source=.\sqlexpress; Integrated Security=true; Initial Catalog=test"))
    {
        var result = conn.Query<User>(
            "select * from (select Id = 420, Login = 'foo', Passwd = 'bar') a where Login=@login and Passwd=@passwd",
            new {login = "foo", passwd = "bar"}).First();

        Assert.That(result.Login, Is.EqualTo("foo"));
        Assert.That(result.Passwd, Is.EqualTo("bar"));
    }
}


Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué