Jeder kann eine lib raten, einen rohen SQL-Code durch Lambda-Ausdruck zu erstellen? Empfehlen Sie EF und Linq2sql nicht, da es keine Kontrolle über die Abfrage bietet.Build sql Abfrageobjekt von Lambda
Alles dergleichen. Es ist der Code aus meiner eigenen Bibliothek. Aber ich möchte das nicht unterstützen, wenn es eine andere gute Lösung für diesen Fall gibt.
[Fact]
public void TotalTest()
{
var countFld = SqlField<Person>.Count(p => p.LastName);
var select = new SqlSelect<Person>()
.AddFields(p => p.LastName, p => p.Name)
.AddFields<Passport>(p => p.Number)
.AddField(countFld)
.InnerJoin<Person, Passport>((person, passport) => person.Id == passport.PersonId)
.Where(SqlFilter<Passport>.From(p => p.Number).IsNotNull().And(p => p.Number).NotEqualTo("3812-808316"))
.GroupBy(p => p.LastName)
.Having(SqlFilter<Person>.From<int>(countFld).GreaterThan(2))
.OrderBy(p => p.LastName);
var expected =
@"SELECT
pe.LastName, pe.Name, pa.Number, COUNT(pe.LastName)
FROM
Person pe
INNER JOIN
Passport pa ON pe.Id = pa.PersonId
WHERE
pa.Number IS NOT NULL AND pa.Number <> '3812-808316'
GROUP BY
pe.LastName
HAVING
COUNT(pe.LastName) > 2
ORDER BY
pe.LastName";
Assert.Equal(expected, select.CommandText);
}
Haben Sie Entity Framework in Betracht gezogen? Oder brauchst du eigentlich * die SQL-Ausgabe? – Bobson
Ich benutze Dapper, ich brauche rohe SQL. Und EF manchmal generieren eine sehr komplexe Abfrage und es bietet keine Kontrolle über die Abfrage Ich mag nicht EF und seine QueryProvider – Serg046
Wenn Sie Abfragen erstellen dieses Handbuch, was ist das Lambda tatsächlich für Sie hinzufügen? Warum nicht einfach den TSQL direkt codieren? Wenigstens dann wirst du wissen, was du machst ... –