The EntitySpaces architecture for .NET is a new persistence layer and business object system for the Microsoft .NET 2.0 Framework. The EntitySpaces architecture is also database independent.
The EntitySpaces data providers are loosely coupled to your application and will let you use the same compiled code to access a whole host of databases.
The EntitySpaces architecture for .NET has in its ancestry the popular dOOdads architecture. The EntitySpaces architecture is generated from your database's metadata or schema using the popular code generator and OR Mapping tool, MyGeneration. MyGeneration is 100% free.
IMPORTANT:
· You should UNINSTALL your current version of EntitySpaces and if possible, completely delete the left over files in your EntitySpaces folder. The installation locations of files have changed and could lead to confusion if there are left over files. Do not try to install the Beta side-by-side with EntitySpaces Developer 1.5.3.
· You need to regenerate your generated classes using the "Generated Master".
· You need to assign a Loader now in your application. This must be assigned in all applications, not just those under Medium Trust. See the Medium Trust blog post mentioned below.
Here are some key features of "EntitySpaces NET Architecture":
· Hierarchical Data Models
· Two Different Transaction Models
· Compact Framework Support
· Serialization
· Nullable Types
· Powerful Dynamic Queries
· Saving via Stored Procedures or Dynamic SQL
· Design Time Data Binding
· Generated from your Database Schema
· LINQ Support
· Regenerate Without Losing Custom Business Logic
· Admin Grid Template Suite for ASP.NET
· Admin Grid Template Suite for DotNetNuke
· Source Code Available
Requirements:
· Microsoft .NET 2.0 Framework
Limitations:
· 45-day fully functional trial
What's New in This Release: [ read full changelog ]
· Option during install to register the EntitySpaces assemblies in the Visual Studio References dialog. This is checked by default and adds some entries to the Windows Registry.
· Medium Trust Support - See BLOG post. You will have to add this code to your application: EntitySpaces.Interfaces.esProviderFactory.Factory = new EntitySpaces.LoaderMT.esDataProviderFactory();
· Support for SQL CE via our EntitySpaces.SqlClientProvider.Ce assembly.
· Sql Ce requires MyGeneration 1.2.0.6 or later to correctly generate the EntitySpaces templates.
· For Sql Ce be sure to check both "Ignore Schema" and "Ignore Catalog" on the Advanced Tab of the Generated Master template.
· You might need to copy the System.Data.SqlServerCe.dll into your MyGeneration folder.
· Sql Ce returns database defined default values for ALL columns that are NULL during Save, no matter what the column type is. For some further info on SQL CE see the SqlClientProvider.Ce Forum.
· Potentially breaking change: These methods have been moved from the esEntity class to the IEntity interface. If you have used them, they will now get compile errors, but these are easily fixed by adding '.es'. They have not changed functionally, it is just a relocation of the methods. They now have to be accessed as follows: obj.es.IsDirty, obj.es.HasData, obj.es.RowState, obj.es.RowError
· Added three new methods to esEntity - IsModified, IsAdded, and IsDeleted (obj.es.IsModified, obj.es.IsAdded, obj.es.IsDeleted)
· Fixed issue with ModifiedColumns not being cleared after a call to Save.
· Fixed issue with underscores in column names when binding.
· Implemented workaround in esTransactionScope to get around a bug in the .NET SqlTransaction class in that it only maintains a weak reference to the SqlConnection class.
· Fixed esTransactionScopeOption.Suppress.
· Added two new methods to the esColumnMetadataCollection class: public esColumnMetadata FindByColumnName(string columnName), public esColumnMetadata FindByPropertyName(string propertyName)
· Added paging support to the Dynamic Query API, an example can be seen on the BLOG post. This is only supported on SQL Server 2005 and MySQL as those databases have built in paging support. Oracle paging will be available in the next beta. The paging will be further unit tested upon the next beta. The two new properties are: obj.Query.PageSize, obj.Query.PageNumber. You must have an OrderBy in your query to use paging.