yes other Inline operations I have in mind / or in some code base: InlineFilterOperation (takes a predicate)
InlineAggregationOperation (with possibility to unnest aggregation within same operation since it's pretty common and more convenient than chainning two independant operations) InlineGenerateRowsOperation (which has issue you mention about yield, but can be work arround by passing method reference instead of anonymous method, also Linq Select as Jason mention is nifty solution) InlineTransformOperation (applies a Func<Row,Row> to transform rows) InlineExpandOperation (applies a Func<Row,IEnumerable<Row>> to generate multiple rows from a single row) InlineConventionInputSqlCommand (takes sql statement and Action<IDbCommand> commandPreparer) I think all those are pretty useful to avoid kingdom of nouns, although nouns are useful for more involved operations, simple processes gain not having to define that many classes Thanks again for your feedback On Dec 23, 11:02 am, Nathan Palmer <[email protected]> wrote: > Have you looked into making the other operations inline? You may run into an > issue with using yield. Optimally it would be great to specify an abstract > operation using an anonymous method. But yield is not allowed there which > causes issues. > > Register(new Operation { > Execute = (r) => { > yield return r; > } > > }); > > Nathan Palmer > > On Thu, Dec 23, 2010 at 11:56 AM, Gauthier Segay > <[email protected]>wrote: > > > > > > > > > Thanks Jason and Nathan > > > regarding constructor / property initializer syntax, I think my issue > > is that a join operation without proper settings is not valid, the > > constructor enforce proper initialization. For those using c#4 with > > named arguments that is not looking that much different than property > > intializers > > > But I'm ok to use property initializer for optional things (like > > orphan row handlers, operation name, etc.) > > > Thanks for your feedback, I'll be pushing other operations and unit > > tests in my fork > > > On Dec 23, 7:21 am, Nathan Palmer <[email protected]> wrote: > > > I like the idea of having this require less code when doing it in C#. I > > use > > > the DSL most of the time for that very reason. > > > > I do prefer the instantiators over the constructor though. > > > > Nathan Palmer > > > > On Thu, Dec 23, 2010 at 6:41 AM, Jason Meckley <[email protected] > > >wrote: > > > > > I would go with properties instead of ctor args and take advantage of > > > > 3.0s instantiators. This way you don't need builder objects. > > > > > Register(new InLineJoinOperation > > > > { > > > > JoinType = JoinType.Inner > > > > LeftOperation = ThisOp(), > > > > LeftColumnsToJoinOn = new[]{"column1"}, > > > > RightOperation = ThisOp(), > > > > RightColumnsToJoinOn = new[]{"column1"}, > > > > Action = (left, right) => {left} > > > > }); > > > > > On Dec 22, 3:29 pm, Gauthier Segay <[email protected]> wrote: > > > > > Hi, > > > > > > I started to use Rhino ETL framework and found useful to be able to > > > > > define operations inline in my processes, what I mean is that I don't > > > > > have to define a class for each typical operation (like join, > > > > > aggregation, filtering, inline sql output, etc.). > > > > > > I intend to add those inline operation to the framework itself > > because > > > > > I think it would be useful to other people as well, I started with > > > > > InlineJoinOperation that you can look at here: > > >https://github.com/smoothdeveloper/rhino-etl/blob/master/Rhino.Etl.Co... > > > > > > so to do a plain join operation I can now register something like > > > > > this: > > > > > > var ensureMergerReturnsNewRow = true; > > > > > new InlineJoinOperation( > > > > > columnsToJoinOn, > > > > > columnsToJoinOn, > > > > > JoinType.Inner, > > > > > (left, row) => { // return join result; }, > > > > > leftoperation, > > > > > rightoperation, > > > > > ensureMergerReturnsNewRow > > > > > ); > > > > > > instead of having to define a specific class > > > > > > Anybody think it's a good thing to have those baked in the framework? > > > > > Do you have any feedback on what is shown in this first class? > > > > > > The icing on the cake for this would be to have fluent operation > > > > > builder to encapsulate the bulky constructors, for this I'm looking > > > > > for syntax ideas. > > > > > > Thanks for your feedback > > > > > -- > > > > You received this message because you are subscribed to the Google > > Groups > > > > "Rhino Tools Dev" group. > > > > To post to this group, send email to [email protected]. > > > > To unsubscribe from this group, send email to > > > > [email protected]<rhino-tools-dev%2Bunsubscribe@ > > > > googlegroups.com> > > <rhino-tools-dev%2Bunsubscribe@ googlegroups.com> > > > > . > > > > For more options, visit this group at > > > >http://groups.google.com/group/rhino-tools-dev?hl=en. -- You received this message because you are subscribed to the Google Groups "Rhino Tools Dev" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/rhino-tools-dev?hl=en.
