public void SimpleOnConflict() { Expression <Func <Cliente> > valueExpr = () => new Cliente { Nombre = "Rafael", Apellido = "Salguero", }; Expression <Func <Cliente, int> > indexExpr = x => x.IdRegistro; Expression <Func <Cliente, Cliente, Cliente> > updateExpr = (excluded, orig) => new Cliente { Nombre = excluded.Nombre + orig.Nombre, Apellido = orig.Apellido, Tipo = TipoPersona.Fisica }; var doUpdate = new OnConflictDoUpdateClause( set: updateExpr, where : null ); var onConf = new OnConflictClause( indexExpressions: new LambdaExpression[] { indexExpr }, where : null, doUpdate: doUpdate ); var clause = new InsertClause( table: "Cliente", value: valueExpr.Body, query: null, onConflict: onConf, returning: null ); var ret = SqlInsertConverter.InsertToString(clause, ParamMode.Substitute, new SqlParamDic()).Sql; var expected = @" INSERT INTO ""Cliente"" (""Nombre"", ""Apellido"") VALUES ('Rafael', 'Salguero') ON CONFLICT (""IdRegistro"") DO UPDATE SET ""Nombre"" = (EXCLUDED.""Nombre"" || ""Cliente"".""Nombre""), ""Apellido"" = ""Cliente"".""Apellido"", ""Tipo"" = 0 "; AssertSql.AreEqual(expected, ret); }
protected PostgresInsertBase(IServiceProvider serviceProvider, InsertClause <TColumns> insertClause, OnConflictClause onConflictClause) : base(serviceProvider) { InsertClause = insertClause; OnConflictClause = onConflictClause; }