Hey (Note: I've been living in the South for quite a while) Ben. Thank you for the response... my comments inline
1) It was a design choice. It was determined that since not every form within an application needs the same data, it was simpler to engineer a way for forms to share what they needed (through SharedDataTableKey, ChildFormDialog, etc.) rather than to have all forms share the same data. More often than not, we found that each form actually needs its own data. I.E.: Our medical software has "folders" for patients; each patient has its own folder and you can have several folders open at a time. So, since each patient is completely independent, there is no need for them to share the same data... they each need their own.
While the detail data shouldn't be shared, the "list" data should... and should be consistent everywhere displayed. Perhaps SatredDataTableKey gives me what I am looking for, not sure at this point. BTW, the documentation on ChecldFormDialog talks about BO "translation"... but I haven't seen that explained.
2) I would not go so far as to say "silence." If you go to several of the websites of control designers in the .NET market, they all say that they are working on WPF controls, but until the design-time support is at least Beta 2 or RTM, they're not going to release them. The only thing our business layer needs is the implementation of one more interface to enable the functionality to tie to WPF (INotifyCollectionChanged... the same thing that ObservableCollection implements). Additionally, since our business objects can already attach to anything that accepts IEnumerable as the source (ItemsSource, DataContext, DataSource, etc.), you can certainly use a BO with WPF right now. As for design-time support within WPF, we're not going to support it until it's RTM. StrataFrame was not released until VS2005 was RTM, and our support for .NET 3.0/3.5 will not be there until the design-time support is RTM as well. If you're wondering if all of our business objects are going to be DependencyObjects and have all of the fields as DependencyProperties, no, we are not; they will continue to be regular CLR objects.
Posting what you just said on the Web site was exactly what I was looking for.
As for the 1.6.1 release, it's coming soon, but quite frankly, we don't want to pin a date on it as requests from the forum keep working into the release.
You could expose the list of what is already there... and keep adding to it. That would keep everyone informed. I asked because I saw others requesting the information... and the last entry in Posted Releases was from February (it was however this year ).
3) I agree with that. That's why there is a property called AllFields on the business object that returns a string of all fo the field names. Same for the TableNameAndSchema property that returns the table name and schema so, you could use "SELECT " + this.AllFields + " FROM " + this.TableNameAndSchema and you would avoid the use of the * you vehemently dread. However, not all developers are like you, so we certainly have to still support the *
"Select *" is valid SQL, so you should support it. You didn't mention what happens to the BO classes when a column datatype is changed... or a column is removed. Does this cause design time errors... or runtime errors?
4) No, there isn't. We have created a semi-caching engine that caches single records based upon the PK but until we are happy with it, we won't include it in the framework. You certainly have the ability to create a set of static BOs somewhere with all of your lookup tables... since that's the thing people generally want to cache.
Which is one of the reasons I asked Question #1. Properly sharing one instance of well-cached reference data is a very important piece of functionality. An just like "idiots being so damned clever" (in the sense of idiot-proof software), I've alsoways found "static" reference data to fall well short of static. But then again I don't expect a Framework to solve all my development problems... but I remain optimistic.
5) Yes, all of the original samples were in VB and are in the process of being reworked to include both. New help includes both.
No problem.
6) Well, that's because we had tons of VB samples and we wanted to have the same ones in C#. The quickest way to do so was to run them through a converter, so, that's why some of them contain the C# equivalents of things like the With keyword in VB.
For your consideration: If you reley on a converter to produce code that is reviewed by potential customers... they may judge your coding (and design) skills by what they see.
Regards,
Mike