- Home
- General
- Announcements
Changes/fixes/additions of the 1.0.2003.3 release.
Joined: 17-Aug-2003
Below is the complete list of what's new/changed/fixed in the upcoming 1.0.2003.3 release of the runtime libraries and corresponding template sets. If you don't see a promised update in this list, let me know.
Tomorrow (sunday) I'll run tests on the code and if these tests are ok, I'll release a beta. On Monday and Tuesday I'll try to complete the new documentation and some examples to illustrate the new code.
I've decided to increase the version number again, due to the changes of several interfaces which can be a problem in remoting scenarios.
FIXED:
- SelfServicing templates
-
When a collection was empty after a first fetch, it would be refetched over and over again.
-
Adapter templates
- EntityCollection template for VB.NET contained a foreach construction which would not compile on VB.NET 1.0 compiler.
- resultsetAdapter.template overwrite Name property of the entity field, a new field Alias is added to IEntityField2 to fix this.
- daaAdapter.template contained hardcoded the connection string key element name, instead of <[ConnectionStringKeyName]>
-
Entities with a 1:1 relation had a problem when constructions like myEntity.RelatedEntity = myRelatedEntity; were used: infinite loops or missing synchronization information were the result.
-
SqlServer driver
-
When retrieving resultset numbers for stored procedures, no exception will fail the routine anymore.
-
GUI
-
Adding new entities to a large project is now much faster.
-
ORMSupportClasses
- Up to 200% speed increase in SelfServicing and Adapter code.
- EntityCollectionBase2 didn't serialize internal member containsDirtyContents.
- Adapter didn't have correct syncing setup code for 1:1 relations. Adapter also didn't reset syncing information if the related entity property was overwritten or set to null or a related entity was removed from a collection.
- Adapter: adapter didn't remove eventhandlers in EntityCollectionBase2.RemoveAt()
- SelfServicing: selfservicing didn't remove eventhandlers in EntityCollectionBase.RemoveAt().
- Isolation level specified in StartTransaction() was ignored in DataAccessAdapterBase.
- DataAccessAdapterBase.Dispose() with an active transaction pending resulted in a NullReference.
- FieldBetweenPredicate marked itself as SelfServicing when an Adapter specific constructor was used.
CHANGED:
- SelfServicing templates:
- Entity classes now only fetch data in the GetMulti and GetSingle methods if the object isn't serializing.
- ToXml() methods are now marked Obsolete and will generate a compiler warning when used.
- Member collections are no longer cleared when new data is fetched, unless the AlwaysFetch<fieldName> is set to true, or the fetch is forced (via myEntity.GetMulti(true); )
- *EntityBase classes in two class scenario are now abstract/MustInherit
- When fetching an entity, the entity class will pass the IEntityFields object already in the entity to the DAO object instead of that the DAO object creates a new IEntityFields object.
-
TypedLists now implement ITypedListLgp, TypedViews now implement ITypedView
-
Adapter templates:
- daaAdapter.template is refactored: a lot of code has been moved to the base class DataAccessAdapterBase. A lot of utility routines have been added to this class so extending DataAccessAdapter through inheritance is now possible.
-
TypedLists now implement ITypedListLgp2, TypedViews now implement ITypedView2
-
GUI
-
Subtask Progress bar is now used to reflect the current element being generated.
-
SqlServer DQE
-
Much faster fieldname construction routine
-
ORMSupportClasses
- EntityCollectionBase2 didn't set related entity information if an entity was inserted with Insert() or via the indexer
- EntityCollectionBase : AllowNew, AllowRemove and AllowEdit are now serialized as well.
- EntityBase2: IEntity2.ConcurrencyPredicateFactory wasn't included with assembly type and name in the XML written by WriteXml, nor was it properly re-instantiated
- IRelationCollection.Add() now returns the added EntityRelation object, so constructions like: myRelationCollection.Add(relationObject).CustomFilter.Add(myPredicate); are possible now.
- Removed reference of winforms and system.drawing from orm support classes library project
- IConcurrencyPredicateFactory has been changed to remove a design flaw. This will break existing implementations.
ADDED:
- SelfServicing, ORMSupportClasses
- ReadXml() / WriteXml() implementations on entity classes and entity collections
- AlwaysFetch<[MappedFieldNameRelation]> property (bool, default false) added to entityclasses to control Lazy Loading for <[MappedFieldNameRelation]>.
- myEntity.RelatedEntity = myRelatedEntity support and FK PK synchronisation support
- Support for recursive saves. Default behaviour is still set to 'non recursive' to avoid code breakage.
- Support for restricted deletes: Delete(Predicate);
- dbUtils*.CommandTimeOut property to control, on a global basis the command time out of the ADO.NET commands executed. Specified in seconds.
- Support for the new FieldCompareRangePredicate object, both in the PredicateFactory template as well as in the ORM Support classes.
- constantsEnums.template now checks for existence of Entities in the project and if no entities are found, empty namespaces are created.
- EntityBase.GetCurrentFieldValue now checks for IsDeleted (throws ORMEntityIsDeletedException) and for a valid fieldIndex.
- Support for IConcurrencyPredicateFactory interface and implementing objects during entity deletes and recursive saves.
-
IEntityField now has a field Alias which can explicitely used to specify an alias for a field in a typed list.
-
Adapter, ORMSupportClasses
- Support for the new FieldCompareRangePredicate object, both in the PredicateFactory template and DataAccessAdapter template as well as in the ORM Support classes.
- constantsEnums.template now checks for existence of Entities in the project and if no entities are found, empty namespaces are created.
- IEntityField2 now has a field Alias which can explicitely used to specify an alias for a field in a typed list.
-
Added the following methods to DataAccessAdapterBase and IDataAccessAdapter: (the On<action> methods are called right before the action takes place, the On<action>Complete methods are called right after the action.) OnSaveEntity, OnSaveEntityComplete, OnSaveEntityCollection, OnSaveEntityCollectionComplete, OnDeleteEntity, OnDeleteEntityComplete, OnDeleteEntityCollection, OnDeleteEntityCollectionComplete, OnFetchEntity, OnFetchEntityComplete, OnFetchEntityCollection, OnFetchEntityCollectionComplete, OnFetchTypedList, OnFetchTypedListComplete, OnFetchTypedView, OnFetchTypedViewComplete, OnDeleteEntitiesDirectly, OnDeleteEntitiesDirectlyComplete, OnUpdateEntitiesDirectly, OnUpdateEntitiesDirectlyComplete
-
TDL/Parser/Interpreter
- If HasEntity statement. Will be true if one or more entities are defined in the project.
-
If IsStringField statement. (Customer request). Will be true if the current EntityField, TypedListField or TypedViewField is of type System.String.
-
ORMSupportClasses/DQEs
- ITypedListLgp(2) and ITypedView(2) interfaces added.
- New version struct added, RuntimeLibraryVersion, which contains the version and buildnumber of this library and DQE's.
- Support for a custom PredicateExpression in EntityRelation (through the CustomFilter property). This predicate expression will be added to the Join's ON clause resulting from the EntityRelation object.
- IEntity.IsDirty and IEntity2.IsDirty mirror IEntity/IEntity2.FIelds.IsDirty (get/set)
- IEntity.PrimaryKeyFields and IEntity2.PrimaryKeyFields mirror IEntity / IEntity2.Fields.PrimaryKeyFields (get)
- IEntityValidator interface added. Interface is for custom entity validator objects.
- IEntity/IEntity2.Validate() added and also calls to IEntityValidator.Validate() in Save logic (also during recurse saves).
- Added ORMEntityValidationException definition, which can be thrown by the IEntityValidator.Validate() method.
- FieldCompareRangePredicate class.
Joined: 18-Oct-2003
Hi Frans, Is the documentation files updated reflecting these changes? Thanks.
Joined: 17-Aug-2003
netLearner wrote:
Hi Frans, Is the documentation files updated reflecting these changes? Thanks.
These changes will go in beta first (which will be today if everything goes ok). THat beta will have first a very small doc with the details about the changes. During the beta (2 weeks at first) I'll finalize the documentation. I hope to have a draft on monday/tuesday. I've also planned to include a couple of 'how do I..' sections in the docs with small things like 'how do I read all entities in a collection' and then a small codesnippet.
So these changes are not yet available.
@jeff: yeah it's a loooong list However most annoying things on the todo list are gone now, so after this it's possible to improve the tool in other areas
Joined: 17-Aug-2003
Driver stuff is scheduled right after this is done. I have to make changes to the drivers (move the connection information control to the driver) before I can move on to anything else.
It's btw not a bug, (no also not a feature ), it works as anticipated but that is not that useful.
(At the moment I have a problem compiling the reference manual, so it might be for at least 3 to 4 hours before the beta is posted )
Joined: 17-Aug-2003
The beta is posted!
Check out: http://www.llblgen.com/pages/secure/runtimelibraries.aspx to download the full archive. Be sure you read the enclosed readme.htm for details. Do NOT unzip this archive in your llblgen pro installation folder!