using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Security; [assembly: AssemblyTitle("WmData")] [assembly: AssemblyDescription("Object DataBase linkage system")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("WMIT")] [assembly: AssemblyProduct("WmData")] [assembly: AssemblyCopyright("Copyright © 2007 - 2008 - 2009 - 2010 - 2011")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] [assembly: Guid("5851cbe1-c435-4390-905e-2f934d685a2f")] [assembly: AssemblyVersion("4.0.4.7")] [assembly: AssemblyFileVersion("4.0.4.7")] [assembly: AssemblyDelaySign(false)] [assembly: AllowPartiallyTrustedCallers] // Version History // // 15-aug-2012 / Version 4.0.4.7: Added the option for a start index to DirectData getObjects to reduce work when retrieving a subset of objects. // Also extended the inRangeSelect function to support longs and strings. // // 14-sep-2011 / Version 4.0.4.6: Added a DateTime formatter in the GenericData for easy usage in select statements. // // 29-jun-2011 / Version 4.0.4.5: Made the database creator slightly more informative, now showing the create table SQL command when crashing. // // 23-feb-2011 / Version 4.0.4.4: Added option to supply an order by statement in DirectData. // // 03-nov-2010 / Version 4.0.4.3: Added conflicting ACTIVE role protection to DataLink. And support for active monitoring with better event arguments and link status. // // 24-aug-2010 / Version 4.0.4.2: If a transaction import causes trouble, the table will be resynced. // // 22-aug-2010 / Version 4.0.4.1: In addition to 4.0.3.0 some extra timing modifications are added to the 'other way around' (from backup-to-active). // // 18-aug-2010 / Version 4.0.4.0: Now using timed locks to expose any deadlocks, this could be very important and helpful while solving bugs. // // 17-aug-2010 / Version 4.0.3.0: Although the previous version was okay in theory, it was somewhat edgy and sensitive for slight network difficulties, // resulting in a jumpy datalink role behaviour. This new version is more robust and introduces the new 'fast&safe' table resyncer. Tables are no longer // entirely dropped and rebuilded but synced on a row by row basis. // // 13-aug-2010 / Version 4.0.2.1: Fixed a little bug that caused the WmDataLink to produce 55%+ CPU load due to looping attempts to determine if // an internet connection is available. // // 11-aug-2010 / Version 4.0.2.0: Again a lot of fixes in the high availability engine and the introduction of cleaning timers (old transactions) // // 10-aug-2010 / Version 4.0.1.0: A lot of fixes in the synchronisation / high availability engine. It appears to work in test scenarios now, ready // for the real life test. // // 02-aug-2010 - 05-aug-2010 / Version 4.0.0.0: Added Transaction support, added the WmGenericData as foundation for both WmData and WmDirectData. // Added high availability support which should work (in theory) but will be tested in further versions. // // 16-jun-2010 / Version 3.3.0.1: Added field 'propertyvalue' as 'text' to the database creator. // // 26-may-2010 / Version 3.3.0.0: While it is only one function in DirectData: getObjectsFromFullQuery; it resembles a big change or break with // the tradition of having one database table per object type. It is now possible to generate objects from a non-existing table using a full query. // // 19-apr-2010 / Version 3.2.0.0: Added DataChangeEvent meganism to (Original)Data. // // 04-apr-2010 / Version 3.1.1.0: Added 'limit' functionality to DirectData. // // 23-feb-2010 / Version 3.1.0.1: Fixed sorting of getDataRows() // // 22-feb-2010 / Version 3.1.0.0: Added DataRow functionality to DirectData. It is now more and more similar to Data, nearly interface compatible. // // 07-feb-2010 / Version 3.0.1.0: Added the getObjectsFromSql function to DirectData. It will be used to get results form a DISTINCT sql command, // something that is not available using ADO. // // 25-jan-2010 / Version 3.0.0.6: Added 'not in' mode to the 'in range' select generator(s). // // 24-jan-2010 / Version 3.0.0.5: Imported an old friend from the Manager era: the ProxyConvertor. It is included in the Data Tools to provide // assistance in the new EnterpriseCentral webservice consumption worker. // // 28-sep-2009 / Version 3.0.0.4: Another attempt to fix a rare threadsafety bug similar to that of 3.0.0.2. I suspect it resides in first-call to a // given table; when the adapter and intermediate objects are created. Added some extra thread safety to this party. // // 21-sep-2009 / Version 3.0.0.3: Added feature to copy one object instance into another, but with a differen target type. This is userfull // if one would like to "downgrade" from a inherited object type Parent/Child types (child becoming parent). Required for Lemmid customer handling. // // 03-sep-2009 / Version 3.0.0.2: Threadsafety bug fixed that caused DataTable collection-has-changes exceptions when selecting from multiple // threads with a not fully builded object cache (creation of cached object was not threadsafe). Included some extra locks around the getObject(s) functions. // this bug was revealed by the group of Lemmid Workers that simultaniously query the domain table in the Lemmid system. // // 04-aug-2009 / Version 3.0.0.1: Compiled for .NET 3.X. // // 12-jul-2009 / Version 3.0.0.0: Birth of DirectData as a 'brother' to the original Data it is now possible to omit the whole DataSet layer and // use direct SQL based functions that are better scalable, faster in updates/adds/deletes and in largers tables. Some of the new technology // have been implemented in the original data as well, like the new Id manager and the Intermediate object system. Let's hope that this new // version is just as reliable as the original 2.3 series. Also updated to the new MySql.Net connector v6 that is confirmed to be 60% faster in // loading initial data sets. // // 17-jun-2009 / Version 2.3.3.0: It is now possible to use Data's power to generate an "in range" select statement using some System.Reflection // power. It can be used to generate select statements for Id or other Properties. The current implementation is functional for non-strings (aimed at ints) only. // Futhermore it is possible to logically combine select statements for advanced search query building. // // 03-jun-2009 / Version 2.3.2.0: It is now possible to sort the DataRow[] result when selecting from a table with a select statement. // also included several overload to remain interface compatible with older versions. // // 01-mar-2009 / Version 2.3.1.1: It is now possible to delete a non existant datafile, that is much faster to program, the null check is now performed by data. // // 24-feb-2009 / Version 2.3.1.0: Added dynamic TEXT column types, when propertyname has text, body, description, specification in it. // // 09-feb-2009 / Version 2.3.0.5: Added several TEXT column types in the DataBaseCreator // // 27-jan-2009 / Version 2.3.0.4: Added method CopyObject in WmDataTools for easy shallow copy functionality. // // 19-jan-2009 / Version 2.3.0.3: Added field specification and billtext to qualify for TEXT column type in DataBaseCreator class, for // usage in WMCM Project Proposal. // // 10-nov-2008 / Version 2.3.0.2: Added field longtext and shorttext to qualify for TEXT column type in DataBaseCreator class, for // usage in the Manager module "News". // // 21-sep-2008 / Version 2.3.0.1: Added a function to query SQL directly to test if table exits. To be used in the Core Manager to // check if some module specific threads and timers should be started. // // 07-aug-2008 / Version 2.3.0.0 (reverted from 2.2 branch back to 2.0.1.1). Version 2.2.x was not stable, it stalled after // some unknown time / conditions. To prevent clutter with failing webapps, I decided to ditch the entire 2.2. branch and revert // to the superstable 2.0.1.1 version. Added new function getObject() to maintain interface compatibility with 2.2. branch. // // 01-jun-2008 / version 2.0.1.1(unchanged): Fixed a problem in the object cache that caused the SQL to update all records // of a given table once loaded for the first time. The cached object caused the TableRow to be flagged as updated. // That was a problem when debugging on a remote system (connected to production database), latency in the query unveiled the problem. // // 02-may-2008 / version 2.0.1.1: Updated to MySQL Connector 5.2 in order to be functioning with MediumTrust, // finally those stupids found a way to parse a boolean from the adapter. Therefore the sbyte casting was failing.. // updated to 2.0.1.1 to fix that. // // 09-dec-2007 / version 2.0.0.0: Some Application Pools were recycling due to changed files in // the root folder. This is a known 'feature' of Microsoft IIS to ensure up to date webserver responses. // it was very frustrating since files were stored inside a upload folder, wich caused application resets. // To prevent the application pools from recycling, file activity should be placed outside the root folder. // Therefore WmData was modified to support database file storage. In this fase it is still very new, Oculus // will be using it for the Graphs images. I hope this addition will prove to be a reliable useful one. // // 10-nov-2007 / version 1.0.0.2: Integrity of the async adapter update could not be confirmed // Therefore the async system was downgraded by the same-thread-backend-update to ensure integrity. // To test the integrity of the system, Data was implemented at the Oculus. Data Activity is very // high there, therefore this was an interesting testground. // // 22-oct-2007 / version 1.0.0.1: This version went into production at RetailProfs.com and DWS. // // 19-oct-2007 / version 1.0.0.0: Creation of the library, after many seperate versions // of the Data system, managing the bugs became more and more harder // certainly fighting old and solved bugs in older applications is makes me want to sleep. // Therefore a unified, full featured, uber turbo version of data was created. // One data to rule them all. - Willem