You can subscribe to this list here.
2003 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(10) |
Oct
(2) |
Nov
(9) |
Dec
(2) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2004 |
Jan
(3) |
Feb
(4) |
Mar
|
Apr
(1) |
May
(3) |
Jun
(4) |
Jul
(1) |
Aug
(2) |
Sep
|
Oct
|
Nov
|
Dec
|
From: Richard B. <rb...@ar...> - 2004-08-17 00:20:11
|
Hi Everyone, This new release of the AtomsFramework sees a number of new additions. 1. Structures can now be mapped (only via XML) 2. Massive rework of object retrieval to reduce round tripping. Under most circumstances your performance should improve, however if you have classes mapped against unindexed views you may notice a degradation in performance. 3. Collections can now be data bound to datagrids. See the new sample project for an example. 4. Events get fired when a persistent object is loaded and when it is marked as dirty. Collections will also fire an event when any object they contain is dirtied. 5. The retrieve and find methods no longer need parameters. This makes life easier for C# programmers :-) 6. The Item property of persistent collections is now a default property. C# code must change to use [] syntax instead of the get_Item() method. 7. A new property exists for determining if an object is being loaded by the persistence broker - IsLoading. I hope the changes make using the framework a little easier for you :-) - Richard. |
From: Richard B. <rb...@ar...> - 2004-08-03 07:53:24
|
(This is a copy of a message posted on the help forum) Hi everyone, It is now possible to map properties of classes contained with a persistent class without actually mapping the contained class itself. Since .NET structures themselves cannot be mapped (as they are value types and updating member properties is difficult) you can do something like the following: Public Class SomeStruct Private _partA As String Private _parent As AToMSFramework.CPersistentObject Public Property PartA() As String Get Return _partA End Get Set(ByVal Value As String) _partA = Value If Not _parent Is Nothing Then _parent.SetDirtyFlag() End If End Set End Property Friend Property Parent() As AToMSFramework.CPersistentObject Get Return _parent End Get Set(ByVal Value As AToMSFramework.CPersistentObject) _parent = Value End Set End Property End Class ------------- Public Class Class1 Inherits CPersistentObject Private _ss As SomeStruct Public Property Struct1() As SomeStruct Get Return _ss End Get Set(ByVal Value As SomeStruct) _ss = Value SetDirtyFlag() End Set End Property Public Overrides Function getNewObject() As AToMSFramework.CPersistentObject Return New Class1 End Function Public Overrides Function IsValid() As Boolean Return True End Function Public Sub New() _ss = New SomeStruct _ss.Parent = Me End Sub End Class ----------- <class name="Class1" table="xx" database="db1"> <attribute name="OIDValue" column="oid" key="primary"/> <attribute name="Struct1.PartA" column="partA" /> </class> -------- In your code you can now do Dim c1 As New Class1 c1.Struct1.PartA = "AA" c1.Save() or c1.OIDValue = "000000420001" c1.Retrieve(c1) Debug.WriteLine(c1.Struct1.PartA) and everything will work correctly. The code is currently in CVS and will be included in the next release. - Richard |
From: Richard B. <rb...@ar...> - 2004-07-27 07:40:00
|
Hi everyone, AtomsFramework version 1.20 has just been released. The details can be found on the sourceforge site and a big thanks to Dan Mayer for his contributions to this release. - Richard. |
From: Richard B. <rb...@ar...> - 2004-06-27 23:53:59
|
A new release of the framework is available. This release adds support for: 1. Pessimistic Locking strategies, and 2. Improved error reporting, via new exception types. Also, msgboxes are removed from the framework so that errors don't cause ASP.NET failures. The documentation has not been updated as yet, but will be before the 1.0 release is made available in the next month or so. Thanks to Dan and Bo for the ideas for the new features. - Richard. |
From: Richard B. <rb...@ar...> - 2004-06-16 22:14:00
|
Eric Mckenna wrote: >I also tried cahnging all the database columns previously of type DateTime >to type String. >Still no success. > > > Hi Eric, The problem with MySql is fixed now. I've made comments against your post in the forums and also against the bug entry. I'll update to ByteFX 0.76 and see if there are any other issues I need to be aware of. |
From: Richard B. <rb...@ar...> - 2004-06-07 13:53:43
|
Eric Mckenna wrote: > You have an error in your SQL syntax. Check the manual that > corresponds to > your MySQL server version for the right syntax to use near '?, ?, ?, > ?, ?)' > > Hi Eric, I think you may find that the latest version of the ByteFX provider has changed the syntax of parameter based SQL statements. I'll need to get hold of the latest versions of the provider and update the framework if this is the case. Would you be able to try the version included in the 0.1.7 kit (0.72) and see if it works OK. - Richard. |
From: Eric M. <eri...@co...> - 2004-06-07 00:35:48
|
I know its probably something simple I'm missing but figured someone might have seen this error before. I'm using version 0.1.7 of framework and also using newest version of ByteFX 0.76. I'm thinking it could be the formatting of the DateTimes causing an error. Any thoughts? thanks, eric. stack trace: ID: 000000100001 name: testPlayer createDate: 6/6/2004 8:23:15 PM You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '?, ?, ?, ?, ?)' at line 1 at AToMSFramework.CPersistentObject.Save(CPersistentObject obj) in C:\Projects\Visual Studio .NET Projects\Atoms Lite\Atoms Framework\CPersistentObject.vb:line 687 at AToMSFramework.CPersistentObject.Save() in C:\Projects\Visual Studio .NET Projects\Atoms Lite\Atoms Framework\CPersistentObject.vb:line 702 at poker.domain.test.PersonTest.Init() in c:\p2\code\poker\domain\test\persontest.cs:line 24 debug: BEGIN TRANSACTION Saving object CPerson @p1: 000000110001 @p2: 6/6/2004 8:25:15 PM @p3: NULL @p4: 6/6/2004 8:25:15 PM @p5: testPlayer INSERT INTO person (oid, CreatedDate, ModifiedDate, create_date, person_name) VALUES (?, ?, ?, ?, ?) ROLLBACK TRANSACTION <<Closing connection 1>> Cache - Delete object with keys: 1) System.String: 000000110001 <<New connection>> BEGIN TRANSACTION Deleting object CPerson DELETE FROM person WHERE person.oid = '000000110001' ROLLBACK TRANSACTION <<Closing connection 1>> The thread '<No Name>' (0x30c) has exited with code 0 (0x0). |
From: <ben...@id...> - 2004-05-21 12:16:38
|
Dear Open Source developer I am doing a research project on "Fun and Software Development" in which I kindly invite you to participate. You will find the online survey under http://fasd.ethz.ch/qsf/. The questionnaire consists of 53 questions and you will need about 15 minutes to complete it. With the FASD project (Fun and Software Development) we want to define the motivational significance of fun when software developers decide to engage in Open Source projects. What is special about our research project is that a similar survey is planned with software developers in commercial firms. This procedure allows the immediate comparison between the involved individuals and the conditions of production of these two development models. Thus we hope to obtain substantial new insights to the phenomenon of Open Source Development. With many thanks for your participation, Benno Luthiger PS: The results of the survey will be published under http://www.isu.unizh.ch/fuehrung/blprojects/FASD/. We have set up the mailing list fa...@we... for this study. Please see http://fasd.ethz.ch/qsf/mailinglist_en.html for registration to this mailing list. _______________________________________________________________________ Benno Luthiger Swiss Federal Institute of Technology Zurich 8092 Zurich Mail: benno.luthiger(at)id.ethz.ch _______________________________________________________________________ |
From: Richard B. <rb...@ar...> - 2004-05-18 04:55:07
|
Hi, I have made a number of bug fixes as follows: 1. Leading AND appearing in where condition of MultiRetrieveCriteria 2. Row limit was wrong for SQL server 3. Could not load an object from a MultiRetrieveCriteria due to table alias problems 4. Table alias for LIKE, <= and >= conditions was not working Also added some new functionality: 1. Ability to retrieve the nth occurrence of a class from a MultiRetrieveCriteria (if there is a circular reference, for example) 2. Link from CCursor back to the source CPersistentCriteria 3. CCursor reports the total number of rows retrieved in TotalRows 4. Changed Rows method of *RetrieveCriteria to RowLimit for clearer meaning. 5. Added flag to CRelationalDatabase class to indicate if row retrieval limits should be specified at the start or the end of the SQL statement (ie TOP and LIMIT clauses) The code should be available in CVS after the next sourceforge refresh. - Richard. |
From: Richard B. <rb...@ar...> - 2004-05-03 07:00:05
|
Hi, I've just committed some changes to the AtomsFramework to provide initial (beta) support for shared tables for classes and subclasses (think Atoms Dictionary). There are new XML/Attribute options at the Class level - SharedTableField - SharedTableValue If SharedTableField is defined a shared database table is assumed. You do not need to provide a reference field back to the parent table (since it's shared) and the class will inherit the key information from the parent. It works for simple load/save test cases at this stage but is not heavily tested so keep your eyes open if you use it. All existing superclass and inheritance stuff will still work as is. - Richard. |
From: Richard B. <rb...@ar...> - 2004-04-20 08:48:40
|
Hi everyone, Sitting in hotels with nothing to watch means you get time to cut some code :-) As a result I have made some new additions to the framework recently as follows: 1. Added a new method to CCriteriaCondition to allow joining of subclasses using AND. This allows you to create SQL where clauses in the form of (A=1 OR B=2) AND (C=3 AND D=4), etc 2. A number of minor bug fixes 3. Added a number of custom attributes to OPTIONALLY move class mappings from XML to code. The idea behind this being that currently changes to a business class require changes in the code, in the XML file and in the database. By incorporating the mapping into the business object there are now only two places that need changing - namely the code and the database. This should make business objects and applications more portable and reduces the XML file to database declarations only. You can now decorate a class definition using attributes as follows: '----------- <AFTable("jobs", "MSA", AFTableAttribute.KeyType.useOIDValue, OIDcolumn:="oidvalue")> _ Public Class CJob Inherits CPersistentObject Private m_description As String <AFColumn("description", Find:=True)> _ Public Property Description() As String Get Return m_description End Get Set(ByVal Value As String) m_description = Value SetDirtyFlag() End Set End Property Public Overrides Function getNewObject() As AToMSFramework.CPersistentObject Return New CJob End Function Public Overrides Function IsValid() As Boolean Return True End Function End Class '---------------- The AFTable attribute defines the table mapping for the class and the AFColumn attribute defines column mappings. You only need to map columns that are actually represented in the database (also in the XML). If an class attribute is used only as an association target then it does not need to be mapped (either in the XML or using attributes). This replaces <Class .../> and <Attribute .../> declarations in the XML. Associations can also be declared using attributes as follows: '--------------- <AFTable("teams", "MSA", AFTableAttribute.KeyType.useOIDValue, oidcolumn:="oidvalue"), _ AFAssociation(GetType(CAttrEmployee), "TeamLeader", CUDAMap.CardinalityEnum.ONE_TO_ONE, Retrieve:=True), _ AFAssociationEntry("TeamLeader", "TeamLeaderOID", "OIDValue"), _ AFAssociation(GetType(CJob), "Job", CUDAMap.CardinalityEnum.ONE_TO_ONE, Retrieve:=True), _ AFAssociationEntry("Job", "jobOID", "OIDValue"), _ AFAssociation(GetType(CAttrEmployee), "Members", CUDAMap.CardinalityEnum.ONE_TO_MANY, Retrieve:=True, Save:=False), _ AFAssociationEntry("Members", "OIDValue", "TeamOID")> _ Public Class CTeam Inherits CPersistentObject ..... '----------- The AFAssociation defines the association in general terms and the AFAssociationEntry defines the properties that are used in the association. This replaces <Association .../> and <Entry .../> in the XML file. Note that some of this is still experimental (superclasses aren't properly tested yet), but it works for the majority of cases. Of course, the current XML mapping files still work as they are. Custom Attributes are only processed after the XML file has been read. The new attributes are: <AFTable> <AFColumn> <AFAssociation> <AFAssociationEntry> If you use the new attributes and notice any problems please contact me immediately. - Richard. |
From: Richard B. <rb...@ar...> - 2004-02-20 06:02:16
|
Hi, I've checked in a number of bug fixes for the Atoms Framework related to the use of parameters. The problems were seen mainly on MSSQL server databases, and in tracking the amended and created dates for objects. CVS is up to date with the changes, and if there are no more bugs in the next week or so, I'll release 0.1.5 with all the recent fixes in it. - Richard. |
From: Richard B. <rb...@ar...> - 2004-02-16 21:30:03
|
Hi, I've just checked in a minor bug for the Atoms Framework. Due to the evils of cut and paste parameters were being added to the update SQL statement twice, resulting in an error. - Richard. |
From: Richard B. <rb...@ar...> - 2004-02-12 05:58:47
|
Hi, I've just committed a bug fix for SQL generation for deleting object. If the key fields were not the first attributes listed in the XML mapping then the SQL was generated incorrectly. CVS has been updated, and the change will be included in the 1.5 release when it happens. Regards, Richard. |
From: Richard B. <rb...@ar...> - 2004-02-02 00:30:20
|
Hi, I screwed up my release of the 0.1.4 version. In SQL parameters the .NET doco says that it will convert the .NET data type to the appropriate native SQL data type. As it turns out, it only works on strings. Anything else and you have to supply the data type specifically. I left out the specific data types initially, but have now fixed it and re-released 0.1.4 with the bug fix included. If you have already downloaded 0.1.4, I suggest that you do so again. Sorry :-( - Richard Banks http://www.arel.com http://www.arelretail.com |
From: Richard B. <rb...@ar...> - 2004-01-30 21:48:41
|
The new version is a rollup of the changes since last update. This includes... - BLOB support - GUID Generation - Serialization attribute on CPersistentObject - Transaction control from the persistence broker If there are any problems, post a message in the forums. Richard. |
From: Richard B. <rb...@ar...> - 2004-01-27 23:20:23
|
Hi all, GUIDs are now supported in the AtomsFramework. Use them exactly the same way that you would with OID's, however instead of a 12 character field in the database you need to have a 32 character field. Also, there is no need to have an OID table. For example, in your mapping use: <class ... > <attribute name="GUIDValue" column="guid" key="primary"/> .... </class> The attribute to use is CPersistentObject.GUIDValue - Richard Banks http://www.arel.com http://www.arelretail.com |
From: Richard B. <rb...@ar...> - 2004-01-23 05:47:24
|
Hi, The AtomsFramework now supports BLOBs in databases. For MSSQL create either a "VarBinary" or an "Image" type column For MSAccess use an "OLE Object" field With binary field support you can now save your own encrypted passwords, pictures of objects, files, or whatever takes your imagination. Here's an example of how to use it... Public Class CBinary Inherits CPersistentObject .... Dim m_binary() As Byte .... Public Property BinaryField() As Byte() Get Return m_binary End Get Set(ByVal Value As Byte()) m_binary = Value SetDirtyFlag() End Set End Property End Class Private Sub SomeSub() Dim cb As CBinary Dim asciiEnc As New System.Text.ASCIIEncoding cb = New CBinary cb.Name = "test" cb.BinaryField = asciiEnc.GetBytes(cb.Name) 'Convert string to byte array cb.Save() cb = New CBinary cb.Name = "test" cb.Find(cb) MsgBox(asciiEnc.GetString(cb.BinaryField)) 'Convert byte array back to string End Sub |
From: Richard B. <rb...@ar...> - 2003-12-18 06:13:11
|
Hi, A new release of the AtomsFramework is available (or will be as soon as sourceforge is back up). The version contains completed source code documentation and the .CHM file and web site have been updated accordingly. A few new methods have been added to the CPersistentObject (thanks to Marcos!) that assist in the retrieval of multiple objects for a class. The functions are getAll() and getCollectionByAttributeEqualsTo(). IsReferenced() is a new method for the CPersistentObject has been added that will tell you if any other objects reference the current object. It can be quite database intensive, depending on the number and type of associations referencing the objects class, but it works. If you notice any problems post a message :-) P.S. Merry Christmas and Happy New year!! - Richard Banks http://www.arel.com http://www.arelretail.com |
From: Richard B. <rb...@ar...> - 2003-12-01 07:35:39
|
I've just added web based MSDN style documentation to the web site. It's generated by NDoc and is still far from complete, but it's a start. I'll keep adding to it over the next few weeks until it's complete. After that, I'll release the next version (hopefully). - Richard Banks http://www.arel.com http://www.arelretail.com |
From: Richard B. <rb...@ar...> - 2003-11-24 07:23:48
|
Hi, After the changes to 0.1.0 of the framework I broke the code for object.find() when using more than one attribute. CVS contains the fix and I will release version 0.1.2 in the next few days. - Richard Banks http://www.arel.com http://www.arelretail.com |
From: Richard B. <rb...@ar...> - 2003-11-23 23:22:50
|
Hi, Support has been added for read only objects. You can potentially create an object that is based on a view, however since a view should not be allowed to update data (even though SQL server permits it) you can set the object to be read only. In the XML for the class add readonly = "true", for example <class name="CName" table="DBTable" readonly="true" database="db"> - Richard Banks http://www.arel.com http://www.arelretail.com |
From: Richard B. <rb...@ar...> - 2003-11-19 02:53:57
|
The web site contents are now available in CVS under the "web" module. I have a cron job running that will refresh the web site every half hour based on the contents of CVS. If anyone has some skill with web site design please feel free to volunteer to clean it up. We could use the help :-) - Richard Banks http://www.arel.com http://www.arelretail.com |
From: Richard B. <rb...@ar...> - 2003-11-19 01:57:02
|
Hi, This release follows on from the version 0.1.0 release. It includes a number of fixes, including (significantly) proper support for OR criteria, plus various other fixes related to the changes made in the 0.1.0 release. This should work much better now, but you should still keep your eyes open for problems ;-) - Richard Banks http://www.arel.com http://www.arelretail.com |
From: Richard B. <rb...@ar...> - 2003-11-18 00:09:29
|
Hi, A new version of the Atoms Framework is now available in CVS with a number of significant changes in it. A lot of the fundamental aspects of how selections are performed has been rewritten. Most notably, all selections are now performed as joins using table aliases, and all associations are retrieved using one SQL statement where possible. The selection criteria classes have been significantly rewritten. The parameters collection is no longer used and you will need to adjust your code accordingly. When you add a criteria to a where condition, you must supply the value for the comparison as the second (and third) parameter. This is much more intuitive and prevents issues with incorrect number of parameters in the collection. Further, it is now possible to use IN, NOT IN and BETWEEN clauses in your where criteria. The code below shows a (trivial) example of how to perform a SELECT IN retrieval (you can also see the syntax for criteria selection). mr = New CMultiRetrieveCriteria(emp) mr.WhereCondition.addSelectEqualTo("Name", "ac") si = New CSelectInCriteria(emp) si.WhereCondition.addSelectEqualTo("Name", "ac") si.SetSelectAttribute("Name") mr.WhereCondition.addSelectIn("Name", si) cursor = mr.perform ---------------------- NOTE: IT IS VERY LIKELY THAT SOME THINGS ARE BROKEN IN THIS RELEASE. I have done testing using existing code and have found no problems, but my tests are not comprehensive. If you find problems please let me know ASAP. ---------------------- The full summary of changes is listed here: 1. Associations can now be named using name="xxx" in the XML association definition. If no name is supplied the name will be the target attribute. This was provided to avoid duplicate naming and to provide a method to name associations as desired (perhaps to match a UML design). 2. When joining objects in multi retrieve/summary criteria you must supply the name of the association to traverse. This is required for situations where multiple associations between objects exist. 3. Circular relationships (eg employee to employee such as manager/staff) are now supported. Previously this would cause big problems, such as infinite looping (especially is cache lookups were turned off). 4. New objects were incorrectly having their dirty flag cleared after attempting a retrieve(). The dirty flag is now cleared only if the retrieved object is persistent. 5. Persistence broker singleton corrected. The first time the persistence broker is instantiated and init'ed the singleton should be set to this reference. This was not the case and a new broker was being created erroneously. This affected the object cache and could lead to other potential problems. This is now corrected. 6. The ability to use GROUP BY on non-summary retrieve criteria has been removed. It is invalid to use group by unless performing summary operations so it makes no sense to have it available where it does not apply. 7. Added BETWEEN, IN and NOT IN support (see above) 8. Removed parameters collection for retrieve criteria (see above). I will release version 0.1.0 later this week once I fix up the sample projects and get the web site updated slightly. In the mean time please do some testing and let me know what is broken :-) Regards, Richard Banks. ----------------------------------------- Arel Asia Pacific http://www.arel.com Ph: +61 2 9669 8063 Fx: +61 2 9669 8080 ICQ: 60650825 MSN: rba...@ms... ----------------------------------------- |