Friday, December 22, 2006

The estimated date for the EntitySpaces 1.6.0 release is March 15th, 2007. This date is only an estimate but it is our intended goal to hit that release date. There will be a full beta period before the release and all customers will be able to participate. There are numerous fixes and small items in our tracking system not listed here that will make it into this release. We are showing just the major features here.

Data Binding

This is going to be the main focus of the EntitySpaces 1.6.0 release. We will be adding design time data binding to our ASP.NET support. We will also be testing using the .NET GridView, the Telerik r.a.d.grid, Infragistic’s WebGrid, and a few others. We will test in both Windows Forms and ASP.NET environments.

We will implement the Microsoft .NET DataSourceControl class for EntitySpaces to allow for ASP.NET design time support to make things even easier. Two-way data binding will also be supported. EntitySpaces will also support the .NET DetailsView/FormView controls.  Finally, hierarchical data binding will be supported so that you can drill down through the hierarchical data model in your grid, if your grid supports hierarchical data binding.

Samples of EntitySpaces being used in all of the above environments will be made available for download as well. These data binding enhancements represent a major chunk of work and are no small undertaking.

Hierarchical Improvements

The hierarchical data model currently only saves from the top down. Our plan is to remove this constraint from the hierarchical model and make it so that it doesn’t matter where you jump into the tree, or whether your traverse it up or down. It will always save correctly no matter what node you call Save on.

Also, added to the hierarchical templates will be an exclude table list. This list  will allow you to exclude certain tables from the model.  If any foreign keys link to a table in the exclude list that entry will not be created, thus, you control what tables are referenced in the hierarchical model.

Medium Trust Support

We will be adding support for running in medium-trust mode which is important when running under certain hosting environments.

Optional Base Class

There will be a checkbox on the master templates that will allow you to slice in your own class between your generated class and the esEntity or the esEntityCollection class. This will allow you to include core functionality across all of your classes within a single base class.

Query API Enhancements

Enhancements to the QueryAPI such as StartsWith, EndsWith, RTrim, LTrim, Trim, Upper, Lower, Row + Top/Limit (MySql, Oracle, and SQL 2005’s ROW_NUMBER will work via these).

Utility Class

There will be a new utility class that will allow you to inherit from or use it directly to call miscellaneous stored procedures and such that really are system wide and don’t make sense in any of your custom classes.

Stored Procedure Based Entities

At this point the plan is to create read-only entities using stored procedures as the source, this has been asked for by lots of folks and we will be asking for input on this before we implement.

Webservices

Publish Full Xml and Binary WebServices Examples

posted on Friday, December 22, 2006 6:16:25 PM (Eastern Standard Time, UTC-05:00)  #   
 Monday, December 11, 2006

Well, it has been almost a year since the last release of MyGeneration but it's finally here. If you want a 100% free, very nice code generator and ORM mapping tool try the new version of MyGeneration 

You can download it here ....

 Get it from CNET Download.com!

MyGeneration, Download.com's #1 Development Tool in the .NET Category.

posted on Monday, December 11, 2006 3:22:12 PM (Eastern Standard Time, UTC-05:00)  #   
 Saturday, December 02, 2006
The EntitySpaces team decided to take a slight detour from its upcoming 1.6.0 release and add support for the Compact Framework to its popular architecture, which is a persistence layer and business object system for Microsoft .NET 2.0. Support for the Compact Framework paves the way for VistaDB 3.0 and the Microsoft SQL Compact Edition well in advance of their official releases. Both VistaDB 3.0 and the Microsoft SQL Compact Edition are still in CTP mode. EntitySpaces classes are generated from your database schema using download.com's #1 download in the .NET development category, MyGeneration, using the EntitySpaces template suite.

EntitySpaces LLC has created a sample application using a very powerful combination of its EntitySpaces architecture in conjunction with VistaDB 3.0, and running both under the Windows Mobile 5.0 Smartphone emulator. Setting up the demo solution was very simple. First, references to the EntitySpaces.Core.Ce and EntitySpaces.Interfaces.Ce assemblies were added. Next, a reference to the EntitySpaces.VistaDB.Ce data provider was added. Finally, the VistaDB Northwind.vdb3 database was added to the project and its "Build Action" was set to "Content" to ensure that the database is copied along with the other assemblies to the proper folder when the simulator is launched. To see the solution in Visual Studio click HERE.


Click here for a larger view The next step was to write the code to connect to the VistaDB Northwind database. To accomplish this, the new configless execution feature provided by the recent EntitySpaces 1.5.2 release was used. The trick was actually figuring out how to get the correct path to the database while running in the simulator. You can see how this was accomplished in the first line of the following code snippet.

    string cnString = ("Data Source =" + (System.IO.Path.GetDirectoryName
     (System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase) +
     "\\Northwind.vdb3; Open Mode = ExclusiveReadWrite"));

    // What the heck let's register a connection
    esConnectionElement conn = new esConnectionElement();
    conn.ConnectionString = cnString;
    conn.Name = "VistaDb";
    conn.Provider = "EntitySpaces.VistaDBProvider.Ce";
    conn.ProviderClass = "DataProvider";
    conn.SqlAccessType = esSqlAccessType.DynamicSQL;
    conn.ProviderMetadataKey = "esDefault";
    esConfigSettings.ConnectionInfo.Connections.Add(conn);

    // Assign the Default Connection
    esConfigSettings.ConnectionInfo.Default = "VistaDb";


The only option on the opening Menu brings the user to a form which contains a DataGrid bound directly to an EntitySpaces EmployeesCollection object loaded with all of the employees in the database. Note that you can use the EntitySpaces collections in design time mode directly on the form itself, this can be seen HERE. The EntitySpaces dynamic query mechanism was used to limit the columns brought back from the database to only those needed to operate the DataGrid. These included the EmployeeID, FirstName, and LastName columns. Finally, the DataGrid TableStyles collection was used to set the EmployeeID column's width to zero so that it would not be visible. The only thing left to do is fetch the data and assign the EntitySpaces collection directly to the DataGrid.DataSource property.

The developer will never need to use any ADO.NET code, or any specific VistaDB code to accomplish this task. In fact, the developer could easily swap out the EntitySpaces VistaDB provider and exchange it for the EntitySpaces Microsoft SQL CE provider, and run the same exact binary code. The EntitySpaces architecture itself is tested using NUnit against all five supported databases using the same exact binary code. No recompilation necessary. The code used to fetch the data and bind to the DataGrid is shown below and taken from the FormGrid class in the demo.

 

Click here for a larger view     private void PopulateGrid()
    {
        EmployeesCollection empColl = new EmployeesCollection();
        empColl.Query.Select
            (
                empColl.Query.EmployeeID,
                empColl.Query.FirstName,
                empColl.Query.LastName
            );
        empColl.Query.Load();

        this.theGrid.DataSource = empColl;
    }

It really is that simple. Next, the "Edit Record" menu item needs to be handled in order to navigate to the editing form. To accomplish this the hidden EmployeeID needs to be grabbed, and passed to the "FormEdit" page based on the selected row at the time the "Edit Record" menu item is clicked.

    private void menuItem_EditRecord_Click(object sender, EventArgs e)
    {
        int index = this.theGrid.CurrentRowIndex;
        int id = (int)this.theGrid[index, 0];  // index is the row
                                               // zero = the first column
        FormEdit form = new FormEdit(id);
        form.Show();
    }

It is on the editing page where users can modify, delete, and add new records. Remember from above that the EmployeeID is passed to the FormEdit page. The constructor for the FormEdit page is very easy to implement using EntitySpaces architecture. Here, instead of the EmployeesCollection, the Employees class is used to load the correct record. The Employees class is used to hold a single record, whereas, the EmployeesCollection holds a set of Employees classes. The record is loaded using the LoadByPimaryKey method as shown in the code snippet below. Finally, the labels and textbox controls are populated with the data from the EntitySpaces Employees object. 


 

Click here for a larger view

 

 

    public FormEdit(int employeeID)
    {
        InitializeComponent();

        Employees emp = new Employees();
        if (emp.LoadByPrimaryKey(employeeID))
        {
            this.lblID.Text = emp.str.EmployeeID;

            this.txtFirstName.Text = emp.FirstName;
            this.txtLastName.Text  = emp.LastName;
        }
        else
        {
            this.lblError.Text = "Employee not found";
        }
    }

On the editing screen shown on the left Margaret's first name has been changed to "Mary" and then saved using Save on the menu. The ability to add and delete records is in the EntitySpaces Mobile demo too but not shown here. Pressing close will return the user to the DataGrid form reflecting any edits that may have occurred. The image on the right reveals that not only was Margaret's name changed to Mary, but "Mike Griffin" was added to the database as well. The grid is refreshed in the Activated event of the FormGrid class. 

It should be clearly seen how easy EntitySpaces can be used to work with the Compact Framework. Click here for a larger viewWhile creating the demo we were very impressed with VistaDB 3.0. VistaDB has some features that we found make it very attractive. First, VistaDB has some nice advantages over the Microsoft SQL Compact Edition. The VistaDB Namespace doesn't change when moving to the Compact Framework. The Microsoft Compact Edition, however, uses SqlCeClient instead of SqlClient, which makes it more difficult for developers to maintain a single codebase. The EntitySpaces architecture conveniently hides these low level issues from the developer, thereby isolating code from such provider quirks. Also, the same VistaDB database (the exact same physical file) will run on all environments with no loss of features or a lesser SQL syntax when running under the Compact Framework.

Having said that, the EntitySpaces Architecture does support the Microsoft SQL Compact Edition fully, and we will publishing the same demo application shown here for it very soon. We are just putting a few finishing touches on the EntitySpaces provider for the Microsoft SQL Compact Edition. The SQL supported under the Microsoft SQL Compact Edition is different than what is allowable under Microsoft SQL 2005. The EntitySpaces user of course will never realize these differences and that is one of the main strengths of EntitySpaces.

The EntitySpaces Mobile demo will be available for download Monday December 4th by 8:00 AM EST time. A link will be posted on this page.

 

 

 

 

 

 


- The EntitySpaces Team

posted on Saturday, December 02, 2006 10:08:43 PM (Eastern Standard Time, UTC-05:00)  #   
 Saturday, November 25, 2006

Venexus Inc., decided to build a full blown search engine for DotNetNuke. Not one that would just index a single DNN site, but one that would allow you to index all portals in a DNN installation AND information from external sites. And how would external site indexing best be handled? via RSS feed aggregation of course. Seamus is the first of the two modules that make up the Venexus Search Engine. SEAMUS = Search Engine Aggregation Module Utilizing Syndication.

A Quote from the Venexus blog posting written by Venexus CEO Jeff Smith

" We started with traditional DotNetNuke module development…until EntitySpaces was released. I’m an old ASP/VB developer and personally, it took me a bit to get my head wrapped around how ES worked, but once I figured it out, I was hooked. ES saves the day by automagically generating all the CRUD (create, read, update, delete). While very similar to the logic of a BusinessController and InfoObject, ES uses Collections and Entities. But, where I found ES the most useful is the Dynamic Queries you can write directly into the business logic.

Sure, I have used DAL Builder Pro, which was a huge time saver, but EntitySpaces made me to never want to develop any other way. Plus, last I checked, DAL Builder Pro was still only for DNN 3 development. The ease of generating the DAL and the ability to easily Regenerate the DAL if the database schema changes, makes ES the tool of choice for all of our module development. I cannot even begin to count the hours I have previously spent hand coding changes in a DAL due to spec changes. Oh how I wish I had all those hours back!

With the new DNN admin grid templates, it is just ridiculous how much code is generated before having to write the first line. The new template will generate an editable grid of the table(s), with sorting, paging, and search. If you are interested in .Net development (this is not just a DNN tool, it works for all .Net 2.0 development and using C# or VB.Net), you must check it out. "

read more on the Venexus blog ...

Venexus Inc., is a leading Business Service Provider, creates customized, easy to use DotNetNuke modules for corporate portals.

posted on Saturday, November 25, 2006 11:48:11 AM (Eastern Standard Time, UTC-05:00)  #   
 Friday, November 24, 2006

MyGeneration 1.2 RC1 - Release Candidate Available


MyGeneration, makers of the 100% free Code Generator and O/R Mapping tool, is now very close to their long awaited release of MyGeneration 1.2. They are looking for some help in testing their release candidate. If all goes well MyGeneration 1.2 could be as little as a week away from the official release, however MyGeneration needs to hear from sufficient numbers of folks on this thread before they release ==> http://www.mygenerationsoftware.com/phpBB2/viewtopic.php?t=2392

Do not install this side-by-side with the 1.5.1.1. release, install over the top.

Here are some of the new features. Please help us verify the build.


• Compiled with .NET 2.0, should be able run without the 1.1 .NET Framework.
• Improved Dock Manager
• Uses the New Scintilla.NET Editor
• Asynchronous Connection Testing
• IBM iSeries Support
• MyMeta Plugin's for 3rd Parties
• VistaDB 3.0 Support (with Views)
• Upgraded old 1.1 provider DLLs to 2.0 providers (SQLite, PostgreSQL, Firebird)
• Lots of various bug fixes


Download ==> MyGeneration 1.2.0 RC1 (Microsoft.Net 2.0)

MyGeneration looks forward to hearing about your experiences with the release candidate on the thread link posted above.

posted on Friday, November 24, 2006 9:36:52 AM (Eastern Standard Time, UTC-05:00)  #   
 Wednesday, November 22, 2006

The EntitySpaces team has been hard at work. We just pushed up a new 1.5.2 beta with lots of great new features such as: a new provider for VistaDB, the ability to programmatically set a default connection which facilitates configless operations, and full support for the DotNetNuke object qualifier. However, we have also been investing a great deal of time on our documentation. We have been using NDoc thus far, but with the recent melt down we began keeping an eye on Sandcastle waiting for the product to mature to a level that we felt comfortable with in order to ship it with EntitySpaces. We also found a very helpful tool cleverly entitled SandcastleGUI. Well, rejoice all ye users the time has come. Let me give you a quick peek at the new documentation. Click on one of the thumbnails below for a full size version.

The new documentation will ship with our 1.5.2 release and the improvements in both presentation and content should make using EntitySpaces even easier(is that even possible?;). We hope you find the new documentation useful, and as always ping us with any suggestions, comments, or questions.

posted on Wednesday, November 22, 2006 10:21:04 AM (Eastern Standard Time, UTC-05:00)  #   
 Sunday, November 19, 2006

The EntitySpaces 1.5.2 Bets is now available for download. Below are the enhancements and fixes added to this release:

  • Full support for VistaDb 3.0
  • Compact Framework Providers for both Microsoft SQL Server and VistaDb
  • Full compliance with the DotNetNuke {objectQualifier} when using dynamic sql or stored procedures.
  • EntitySpaces can now be run without a config file. This is intended to help facilitate modular software development, and removes the situation where your end users are required to enter config entries. Below is an example of how to set your default connection programmatically


// Manually register a connection
esConnectionElement conn = new esConnectionElement();
conn.ConnectionString = "User ID=sa;Password=;Initial Catalog=Northwind;Data Source=localhost";
conn.Name = "GroovySQL";
conn.Provider = "EntitySpaces.SqlClientProvider";
conn.ProviderClass = "DataProvider";
conn.SqlAccessType = esSqlAccessType.DynamicSQL;
conn.ProviderMetadataKey = "esDefault";conn.DatabaseVersion = "2005";

// Assign the Default Connection
esConfigSettings.ConnectionInfo.Connections.Add(conn);
esConfigSettings.ConnectionInfo.Default = "GroovySQL";

// Use the code as usual
Employees e = new Employees();
if (e.LoadByPrimaryKey(1))
{
    e.Save();
}

int? i = e.EmployeeID;

  • Added [XmlIgnore] to hierarchical objects to prevent endless loops with self referencing relationships. This will be further refined again in our 1.6.0 release.
  • Added Lock/SyncLock in two places to protect static data

This is a full beta and all providers are included.

  1. This beta requires the new MyGeneration beta available on the MyGeneration homepage.
  2. The EntitySpaces beta can be found in the trial forum HERE
posted on Sunday, November 19, 2006 9:20:55 AM (Eastern Standard Time, UTC-05:00)  #   
 Thursday, November 09, 2006

So, you must be thinking "What's this EntitySpaces 1.5.2 release? we thought 1.6.0 was next?". The truth is we weren't originally planning to do a 1.5.2 release but it became apparent that this release needs to happen for several reasons. One of the main driving factors for this release is VistaDB 3.0, we plan to fully support VistaDB 3.0 before its official release. It is our hope that upon the next release of the VistaDB CTP there will be no issues preventing us from releasing the EntitySpaces DataProvider for VistaDB, indeed all of the coding is done for it already. We know the VistaDB team is working hard on their next CTP. 

Also, VistaDB runs under the Compact Framework and tonight we successfully compiled EntitySpaces under the Compact Framework as well. This means any device VistaDB runs on EntitySpaces will also. EntitySpaces should also now run under Mono but we have not tested that yet. About the only real problem encountered in getting EntitySpaces to compile under the Compact Framework was our custom configuration section logic and binary serialization. We will still maintain only one codebase and use #IFDEF's in our code to compile for the Compact Framework and without. We are focusing now upon getting EntitySpaces working clean on the Compact Framework. Part of this involves allowing EntitySpaces to run in configless mode which we will offer for both the Compact Framework and our main build. This will help those who might be developing for hosting environments and who need to have a hundred or so connections.

Also, futher support for DotNetNuke including the DNN Object Qualifier and the ability to pull the the connection string directly from the DNN config file are in the works. Of course, there will be a few fixes to address some issues that have been reported as well.

It is our thinking that the 1.5.2 release will be ship near the end of November or early December. Our 1.6.0 release is still all about ASP.NET DataBinding on steroids including hierarchical databinding. The EntitySpaces 1.6.0 roadmap should be published by the end of November and our thinking is that the 1.6.0 release will ship in early 2007. 

- The EntitySpaces Team

 

posted on Thursday, November 09, 2006 9:35:30 PM (Eastern Standard Time, UTC-05:00)  #