jeffreygg wrote:
Otis wrote:
360+ companies in 45 countries at the moment (we use department licenses)
...
But I think the majority will be on O/R mapping sooner or later.
And, I think that the power of your framework and design combined with the incredible value of your pricing scheme makes LLBLGen the harbinger - the apostle, if you will - that will bring O/R mapping to the masses. The world needs a cheap, effective tool like this. Congratulations on LLBLGen's success!
Thanks!
Otis wrote:
Which is perhaps a good choice: sometimes resultset thinking brings you better results (reporting for example) than object oriented thinking and vice versa.
I think some sort of direct, native support for printing needs will be the nail in the coffin. I may be the exception because of the sheer number of times I have to regenerate the LLBL due to time restrictions on the planning phase, but I tend to avoid the typed list/typed view solutions primarily because each time I want to make a change and/or add a new one I have to regenerate the LLBL (honestly a pain in the arse, even with my small 2-person team, simply because of source control issues, and .NETs fun file reference idiosyncracies). Not to mention the current lack of aggregate functionality...
Re-generating code isn't that bad, is it? Sourcecode control is indeed a problem: you have to check out the file before generating code (however, by using subversion or Vault for example, you're not suffering from this). I've changed the vs.net project file generator task performer in the current beta which adds new files to an existing project file, so you don't have to manually add the things, which can make it easier.
Aggregates are indeed lacking, and these are very high on the list. They require a runtime change but it will be worth it.
Oh, what joy I would have if I could have simple access to the following functionality:
1. Create custom collections containing columns from multiple related objects in one call:
Dim myCollection as new CustomCollection
Dim relations as new RelationCollection
Dim fields as new FieldsCollection
Dim predicate as new PredicateExpression
'The fields being added are exposed via shared properties on the entity classes eliminating the need to use field indexes
fields.Add(CustomerEntity.Name)
fields.Add(OrderEntity.OrderID)
fields.Add(OrderEntity.OrderDate)
fields.Add(OrderDetailEntity.ItemNum)
fields.Add(ProductEntity.Name)
'Add relations
'Create predicate
myCollection.GetMulti(fields, relations, predicate)
If you would load the stuff into a datatable, I'd agree, but how does your example work? I mean: the fields should be part of an entity, right? So properties in that entity should be present, at compile time, so dynamically adding fields is not doable, I think.
- Have access to aggregate functions and be able to create a summary report collection similar to (1) above:
fields.Add(CustomerEntity.CustomerID)
fields.Add(OrderEntity.CountOfOrders) 'Count(OrderID)
fields.Add(ProductEntity.AverageOfCost)
fields.Add(ProductEntity.SumOfCost)
Will come in the next runtime upgrades first, which will be followed by a gui update to add this functionality to the designer as well.
- Be able to do all of this without regenerating the LLBL or having to subclass or inherit new collections.
What are the real problems with re-generating the code, could you please elaborate on that?