Question

Pourquoi est-ce que j'obtiens une exception de lieur d'exécution lorsque j'essaie d'exécuter la requête suivante dans Massive?

  public dynamic Find(string email, string type)
    {
        dynamic result = new ExpandoObject();
        result = this.Query(@"SELECT * FROM Addresses a 
            INNER JOIN Members m ON m.Id = a.MemberId 
            INNER JOIN AddressType at ON at.Id = a.AddressTypeId 
            WHERE m.Email = @0 AND at.Type = @1", new {email, type});
        return result;
    }

MODIFIER POUR AFFICHER LA SOLUTION: J'avais besoin de modifier ma requête pour m'assurer qu'une seule colonne avec le nom «Id» était renvoyée.J'obtenais une erreur contraignante car plusieurs colonnes dans Membres et adresses avaient une colonne nommée «Id».Pour obtenir un seul résultat dans ma requête, j'ai dû le modifier comme suit:

result = this.Query(@"SELECT a.* FROM Addresses a 
            INNER JOIN Members m ON m.Id = a.MemberId 
            INNER JOIN AddressType at ON at.Id = a.AddressTypeId 
            WHERE m.Email = @0 AND at.Type = @1", new object[] { email, type }).Single();

J'espère que cela aide quelqu'un d'autre.

Était-ce utile?

La solution

Vous passez les arguments dans un objet anonyme, au lieu d'un tableau d'objets (params).Il devient donc le premier argument et ne parvient pas à se lier car votre requête attend 2 arguments.De plus, Query renvoie le type IEnumerable<dynamic>.

Modifiez votre code comme suit:

public dynamic Find(string email, string type)
{
    IEnumerable<dynamic> result;
    result = this.Query(@"SELECT a.* FROM Addresses a 
        INNER JOIN Members m ON m.Id = a.MemberId 
        INNER JOIN AddressType at ON at.Id = a.AddressTypeId 
        WHERE m.Email = @0 AND at.Type = @1", email, type);

    // decide how you want to handle multiple results here
    return result.FirstOrDefault();
}

Ou vous pouvez utiliser un tableau d'objets explicites:

        WHERE m.Email = @0 AND at.Type = @1", new object[] {email, type});
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top