Stavo cercando di utilizzare i metodi Where and OrWhere di SqlBuilder per Dapper, ma non si comporta come mi aspetterei.Dapper SqlBuilder oWhere utilizzando AND anziché OR
La parte modificata di this question è in pratica ciò che ho eseguito. Dal momento che non ha ricevuto una risposta, lo chiederò qui.
var builder = new SqlBuilder();
var sql = builder.AddTemplate("select * from table /**where**/ ");
builder.Where("a = @a", new { a = 1 })
.OrWhere("b = @b", new { b = 2 });
mi aspettavo select * from table WHERE a = @a OR b = @b
ma ho avuto select * from table WHERE a = @a AND b = @b
Esiste un modo per aggiungere un OR per la clausola where utilizzando lo SqlBuilder?
Penso che sia solo questione di cambiare quanto segue nella classe SqlBuilder per dire OR invece di AND, ma volevo confermare.
public SqlBuilder OrWhere(string sql, dynamic parameters = null)
{
AddClause("where", sql, parameters, " AND ", prefix: "WHERE ", postfix: "\n", IsInclusive: true);
return this;
}
Così come la soluzione sguardo? Mi sono imbattuto anche in questo problema e dopo aver guardato attraverso il codice sorgente di SqlBuilder mi chiedo se l'annidamento di OR e AND funziona in qualche modo in sqlbuilder: (... OR ...) AND (... OR ...) vs. (... AND ...) O (... AND ...) – aurora
Da quello che ricordo, sembra funzionare in questo modo. (... E ... E ... E (... O ... O ... O)). Metterà tutti gli AND insieme e quindi metterà le OR alla fine nel proprio gruppo – Fama