public static Task <List <T> > FetchAsync <T>(this AP.Database self, FSharpExpr <FSharpFunc <T, bool> > query) { var translated = ExpressionToSql.Translate(GetDialect(self).Quoter, query, true, ExtractAsyncPocoColumnNameFs, EmptyCustomParameterValue, FSharpOption <Translator.ItemInCollectionImpl> .None); return(self.FetchAsync <T>(translated.Item1, translated.Item2)); }
public static Task <List <T> > FetchAsync <T>( this AP.Database self, Translator.ConjunctionWord wrd, params Expression <Func <T, bool> >[] queries) { var translated = ExpressionToSql.Translate(GetDialect(self).Quoter, wrd, queries, true, ExtractAsyncPocoColumnName); return(self.FetchAsync <T>(translated.Item1, translated.Item2)); }
private static Translator.SqlDialect GetDialect(AP.Database db) { var type = db.Connection.GetType().FullName; if (type.ToLower().Contains("sqliteconnection")) { return(Translator.SqlDialect.Sqlite); } if (type.Contains("System.Data.SqlClient")) { return(Translator.SqlDialect.SqlServer); } if (type.Contains("NpgsqlConnection")) { //according to https://github.com/npgsql/npgsql/blob/dev/src/Npgsql/NpgsqlConnection.cs return(Translator.SqlDialect.Postgresql); } if (type.Contains(".MySql")) { //according to https://dev.mysql.com/doc/connector-net/en/connector-net-programming-connecting-open.html return(Translator.SqlDialect.MySql); } if (type.Contains(".Oracle")) { //according to http://www.oracle.com/webfolder/technetwork/tutorials/obe/db/hol08/dotnet/getstarted-c/getstarted_c_otn.htm return(Translator.SqlDialect.Oracle); } throw new Exception($"unsupported dialect for db: {type}"); }
public static Task <List <T> > FetchAsync <T>(this AP.Database self, Expression <Func <T, bool> > query) { var translated = ExpressionToSql.Translate(GetDialect(self).Quoter, query, true, ExtractAsyncPocoColumnName); return(self.FetchAsync <T>(translated.Item1, translated.Item2)); }
public DetailsQueryHandler(Database database) { _database = database; }