I now have a complete working version of EasyObjects with Microsoft Access, and I expect to have VistaDB working very quickly. Probably next on my list is MySql. Expect release announcements on these for the EO 1.1 platform soon.<br><br>But there is a catch. I have been tossing this around for some time, bouncing it off various people, and looking at the alternatives, and I have now reached a decision.<br><br>These additional database modules will not be free or open source. It takes quite an effort to develop the software, maintain the site and provide tech support, all of which I am doing free right now.<br><br>Let me stress this before I go any further, <b>EasyObjects 1.x</b> with support for both Oracle and SQL Server,<b> will remain free and open source. </b>You can still download EasyObjects and use it according to the existing license.<br><br>But your purchase of these add-on modules will help support the software and allow me and my development staff more freedom to enhance the product without having to obtain revenue by working on other projects.<br><br>My intention is to keep these add-ons affordable, so as not to prevent people from using them merely because of the cost. I'm just looking at ways to keep the site running and the product moving forward.<br><br>As a small bonus, I will give away free advance copies of the provider of your choice (Access, VistaDB or MySql) to the <b>first 5 registered users </b>that email me with the correct guess of <b>where I got the title of this blog post.</b> Include your username here on this site along with your guess.<br><br>No fair posting the answer here, send me an email at <a href="mailto:matt@noonanconsultinginc.com?subject=EasyObjects%20contest">matt@noonanconsultinginc.com</a>.<br>
I have gotten a few emails about this, so I think it's a good idea to address the issue more publicly.<br><br>The EO2 CTP download does <b>not</b> work with Enterprise Library Configuration Tool. If you try it, you will get a whole bunch of exception messages. If you are new to the Enterprise Library, or EasyObjects, and you are trying to walk through the tutorials, remember they are written for the current release build 1.1.<br><br><a href="/Blog/tabid/124/EntryID/19/Default.aspx">As I posted in the blog release</a>, the configuration piece of the Enterprise Library changed drastically between version 1.x and version 2.0. Releasing the 2.0 code was driven by how much work it was going to take to get the configuration piece (for all intents and purposes) re-written. The decision was made to release it without any configuration support so that early-adopters and power users could run on the new platform (and with Visual Studio 2005, which is not supported with EO 1.x).<br><br>But the current stable release is 1.1, so all of the documentation on this site reflects that. In short, if you are checking out EO (thanks!), start with the 1.1 release build in order to walk through the tutorials. Once you become more comfortable, you can get your feet wet with the 2.0 CTP.<br>
Can anyone explain this? I Googled around but didn't find any significant answers. The following code can be run against the Northwind database in SQL Server, where the CustomerID column is defined as nchar(5).<br><br>Apparently there is a bug when performing parameterized queries on columns using the LIKE clause, as in this example:<br><br>-- Returns no rows<br>SELECT * FROM [dbo].[Customers] WHERE [CustomerID] LIKE @CustomerID<br><br>However, this format works correctly:<br><br>-- Returns 39 rows<br>SELECT * FROM [dbo].[Customers] WHERE [CustomerID] LIKE '%A%'<br><br><br>As further proof of the bug, the NOT LIKE clause acts badly as well:<br><br>-- Returns all 92 rows<br>
SELECT * FROM [dbo].[Customers] WHERE [CustomerID] NOT LIKE @CustomerID<br>
-- Returns 53 rows<br>
SELECT * FROM [dbo].[Customers] WHERE [CustomerID] NOT LIKE '%A%'<br><br>This was originally reported to me by Yu (Bruce) Houfang as an EasyObjects bug, but in reality it seems to be SQL Server's problem. However, I have checked in a work-around to the SqlDynamicQuery class so that if a nchar column is used in a LIKE clause, the direct string value is passed instead of the parameter.<br><br>Can anybody explain this behavior?<br>
<br>
Released an updated version of the CTP with a few bug fixes.<br><ul><li>The SqlDynamicQuery and OracleDynamicQuery classes were not up to date, they were taken from a pre-release version of 1.1 and did not have all the correct logic in them. They are now up to date. (reported by Julio)</li><li>The SchemaItem class was similarly out of date.</li></ul>Keep the feedback coming!<br>
In my previous blog post, I made a couple of statements about the new 2.0 CTP which I wish to clarify further, so there's no misunderstanding.<br><br><h3>C# only</h3>What I meant with this statement is that only the C# templates have been upgraded to generate the correct code. The VB template still generates 1.1-compatible code. This doesn't mean VB users are completely left out! If you are a VB user, create a separate DLL project in C# and generate your abstract classes in C#. Then create your concrete classes in VB and inherit from the abstract C# class. This is not ideal, but I will let you know here on the blog when I post updated VB templates.<br><br><h3>SQL Server only</h3>Again, I may have left you with the impression that the Oracle users are left out. This is not the case. What I removed was the ability to switch between Oracle and SQL Server with the DynamicQuery class (controlled by configuration). I did this by commenting out the switching code and just hard-coding the SQL Server class in its place. If you need Oracle, just replace the SqlDynamicQueryProvider with the Oracle one. The only thing you can't truly do in this version is switch between the two dynamically at runtime.<br><br>I hope that clears things up!<br>
Do you ever get so close to a problem that when you finally see the solution, you kick yourself for not noticing it sooner? Well, that happened to me today. And boy do I feel silly...<br><br>After mulling over <a HREF="/Blog/tabid/124/EntryID/18/Default.aspx">my last blog entry</a>, I suddenly came to a surprisingly obvious solution. If configuration files were going to present a problem and keep EasyObjects off the .NET 2.0 platform, why not get rid of them?<br><br>Not permanently, mind you. But for the purposes of moving forward and getting it in the hands of developers sooner rather than later, <b>why not just bypass the whole configuration mess</b>?<br><br>So that's what I did. And guess what? It works surprisingly well. Oh, there were other issues to be tackled, such as transaction handling, but nothing nearly as messy as configuration. As a result, NCI is proud to announce the availability of a <b>very early </b>Community Technology Preview version.<br><br>This CTP has the following limitations:<br><ul><li>C# only, no VB at this time</li><li>SQL Server only</li><li>No dynamic connection strings</li><li>No integration with the EntLib Config tool</li></ul>Other than the above items, have at it! As always, your feedback is important and welcome.<br><br><a HREF="/Downloads/tabid/125/Default.aspx">http://www.easyobjects.net/Downloads/tabid/125/Default.aspx</a><br><br>Please bear in mind that this software is pre-release. It is not recommended to be used in a production environment without thorough testing.<br>
Now that the 1.1 release is out, work has begun in earnest on a version of EasyObjects that works on .NET 2.0 and the January 2006 release of the Enterprise Library.<br><br>As I have posted in several places, I know you guys are anxious to have it. Believe me, <b>I'm just as anxious</b>. Unfortunately, these things just take time (and more energy than you may realize). If it was just a matter of tweaking a few things in the templates to get it to work, we'd all have something new to play with and I would be breathing a sigh of relief.<br><br>But the fact is, a key component of EasyObjects is the DynamicQuery class, and that class is very dependent on settings stored in configuration. Well, guess what the biggest change was in 2.0? Yep, the configuration settings. And not minor changes, either. We're talking <b>a complete overhaul and refactoring process</b>.<br><br>That's not something you can absorb in a couple of hours, or even a weekend. I'm still not clear on how it will all fit together, I'm looking at creating my own configuration settings class based on the Enterprise Library's model. It's all new and still a bit jumbled for me...<br><br>I have a version of 2.0 that works without the DynamicQuery class, but that's not very useful. So patience, my friends, the new platform is under way. <br><br>It's just progressing at a difficult pace for all of us... :)<br>
New features and bug fixes:<br>
<ul><li>Complete functionality without generating stored procedures. You no longer
have to generate stored procedures for your business objects (although this is
still supported). You now have the option. This paves the way for adding support
for database platforms that do not support stored procedures (Access, VistaDB,
MySql, SqlLite, etc.).
</li><li>Support for Aggregate functions in custom queries, courtesy of David Neal
Parsons.<br>
</li><li>Ability to load an EasyObject from a DataTable or a DataSet (specifying the
index of the DataTable). This allows for developers to return multiple
resultsets from a stored procedure and then load the objecct from the
DataSet.<br>
</li><li>Updated the QuickStart to prompt for dynamic connection information,
including the server name and user credentials.<br>
</li><li>Fixed a bug where the internal datatable was not removed from the dataset
when an exception occurred (reported by daveyjclark).</li><li>A small set of NUnit tests are now included.<br></li><li>Some minor enhancements.</li></ul>Download it today!<br><a HREF="/Downloads/tabid/125/Default.aspx">http://www.easyobjects.net/Downloads/tabid/125/Default.aspx</a><br>
The release candidate for EO 1.1 is now available for download. It's available from the main download page, so download it today and take it for a spin!<br><br><a HREF="/Downloads/tabid/125/Default.aspx">http://www.easyobjects.net/Downloads/tabid/125/Default.aspx</a><br><br>The official release will probably happen this weekend.<br>
Great news, great news. Now that the Oracle testing (and cursing ;) is all but complete, we're just about ready to put the release candidate out for download. Please feel free to give it a test spin, your testing and feedback will only help to make EasyObjects a better product, both for you and the community.<br><br>The last task on my list for RC1 is to update the NDoc files. Expect the announcement soon!<br>