Looks interesting. I like the idea of using dynamics to make working with
Rhino ETL smoother especially with regards to the Row object. However, I
don't want to force it up to 4.0 for that since many people are using it in
production with 3.5. There is a possibility of it compiling to both and
skipping on the new features for the 3.5 version. Anyway, I'd be interested
to see your branch. Do you have it pushed up to github?

Nathan Palmer

On Tue, Oct 26, 2010 at 10:42 PM, Hendry <[email protected]> wrote:

> Hello,
>
> I was wondering about your take on adding .Net 4.0 support on Rhino
> ETL.
>
> I was writing several helper classes on top of RhinoETL for my own
> purpose, just to make it a lot more boo-like (less C# noise), and one
> of the thing I wanted was to add C# dynamic capability on Row objects
> like its boo counterpart.
> To do that I had to modify RhinoETL source-code, and add ExpandoObject
> implementation on QuackingDictionary class.
> I would prefer if I don't maintain a non-vanilla fork of RhinoETL if i
> can help it, so I'm curious if I can push this change back to the
> trunk, noting that it will lock RhinoETL on .Net4.0.
>
> Dynamic isnt actually necessary for what I wanna do, it just reduces
> row["column"] kind of noise. So let me know whether you're happy to
> patch this class to be dynamic-happy, or if you prefer to leave it 3.5
> friendly.
>
> PS, if you're curious, the helper class I was talking about is to
> enable me to write my ETL code like following (don't worry about the
> actual logic.. it's purely random):
> RegisterAll(
>        SourceDb.Read("select blah, bluh from foo"),
>        Rows.Each(row=> row.Price = row.UnitPrice * row.Quantity),
>        Rows.Map(row=> new{CityId = row.City.Id, FullName = row.FirstName +
> "
> " + row.LastName}),
>        Rows.Filter(row=> row.Type == "Employee"),
>         Rows.Aggregate((agg, row)=> agg+= row.Tax)
> );
>
> Or some join, with an example that makes more sense:
> RegisterAll(
>        Join.Left(
>                        Compose(
>                                SourceDb.Read("select * from Order"),
>                                Rows.Map(row=> new {row.OrderId, Spending=
> row.UnitPrice *
> row.Qty}),
>                                Rows.Each(row => log.Write("Order: {0} at
> {1}", row.OrderId,
> row.Spending)
>                )).Right(
>                        SourceDb.Read("select Percent, MinSpending from
> discount")
>                ).On((order, discount)=> order.Spending > order.minSpending)
>                .Select((order, discount)=> new {order.OrderId,
> DiscountAmount=
> order.Spending * discount.Percent),
>
>        TargetDb.Output("insert into OrderDiscount values(@OrderId,
> @DiscountAmount):)
> );
>
> Cheers guys
>
> --
> 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%[email protected]>
> .
> 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.

Reply via email to