Wednesday, September 01, 2010

esvideo

Sometimes you’re so busy designing, coding, testing, and supporting a product that you don’t take the time to stop and appreciate what you have actually accomplished. A customer of ours asked us to create a video overview of our Silverlight functionality and in doing so we had to step back and say “wow”, this is pretty cool. It truly is easy to use EntitySpaces to create a Silverlight application as you will see.

This video shows the various pieces of an EntitySpaces application for Silverlight:

1) The EntitySpaces architecture itself.

2) The WCF Service to retrieve the data.

3) Some kind of row level, column level tracking on the Silverlight side of things (our proxies).

The good news is that EntitySpaces provides all three of these for you and more as you will soon see. The real beauty in this video is how the EntitySpaces server and client proxies are used to serialize data back and forth across the wire all the while tracking row level and column level dirty state. Also, the creation of the WCF service itself which utilizes the EntitySpaces architecture and allows you to take full advantage of the EntitySpaces DynamicQuery API under Silverlight is awesome. In fact, it’s hard to tell that you’re not on the server side because our client proxies look and feel just like the full EntitySpaces architecture.

Well, enough talk. Click on the image above and check out the video, it’s kind of large so give it a minute to download, but it’s worth it. Pay close attention to how few lines of code we actually wrote by hand to create our Silverlight demo, and how simple those lines of code actually are. There’s already a lot to learn when you start working with Silverlight, why not make it easy on yourself and use EntitySpaces? Our Trial version is fully functional and comes with everything you see in this video, including the demo in C# or VB.NET.

EntitySpaces

From Mobile Devices to large scale enterprise solutions in need of serious transaction support, EntitySpaces can meet your needs. Whether you’re writing an ASP.NET application with Medium Trust requirements, a Silverlight/WCF application, a Mono application, or a Windows.Forms application, the EntitySpaces architecture is there for you. EntitySpaces is provider independent, which means that you can run the same binary code against any of the supported databases. EntitySpaces is available in both C# and VB.NET. EntitySpaces uses no reflection, no XML files, and sports a tiny foot print of less than 300k. Pound for pound, EntitySpaces is one tough, dependable .NET architecture.

EntitySpaces LLC
Persistence Layer and Business Objects for Microsoft .NET
http://www.entityspaces.net

posted on Wednesday, September 01, 2010 8:25:41 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]
 Sunday, August 29, 2010

This release of EntitySpaces adds two new databases, adds Silverlight 4 support (we already supported Silverlight 3), provides some excellent proxy improvements, and finally it provides a few well placed customer requested tweaks. EntitySpaces 2010.1.0830.0 is available to customers for download now. Our trial version will be upgraded by Tuesday night, perhaps sooner.

It is recommended that you regenerate your “Generated” classes and any proxies you may be using. Also, we recommend that you re-generate any WCF Services that you may be using that were generated by EntitySpaces in order to realize the improvements mentioned below.

Two New Databases

  • Microsoft SQL Azure is now supported. Just choose “SQL Azure” in the “Driver” dropdown on the settings tab and generate your architecture as you would normally. You still use our normal EntitySpaces.SqlClientProvider.dll provider when running your SQL Azure application.
  • Microsoft SQL Server Compact 4.0 is now supported. We already support 3.x and we now we also support the 4.0 Technology Preview release. The SQL CE 4.0 CTP can be found HERE. This version of the SQL Server Compact Edition passes more of our unit tests than did the 3.x version. For instance, 4.0 supports paging. Also, we have upgraded our SQL CE 3.x driver to 3.5.1.0.

    To connect to the SQL CE 4.x driver use this in your connection string (only needed when generating code):

    Data Source=C:\SomeDatabase.sdf;Version="4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91";

Proxy Improvements

  • We now provide both Silverlight 3.0 and 4.0 Assemblies (please notice the folder structure change in your Runtimes folder for the Silverlight assemblies).
  • Added Collection.LoadAll() methods to the generated WCF Services (See our WCF Template).
  • Added IsDirty() to both the single entity and collection proxy stub classes.
  • Fixed a minor bug in the Collection.Save() method in the Proxy classes. The deleted entities were being brought back in the return collection from Save(), this has been fixed. This was not reported by a user, we found this in our testing.

Other Improvements and Fixes

  • There was an issue with calling Find() on a binding source. This has been fixed.
  • Added HasFilter on the Collection class and added a “get” on the Filter property.
  • Collection.AddNew() was made virtual so that it can be overridden.
  • There was an issue with our collections not working in Windows Forms design mode, this has been fixed.
  • Reworked our C# and VB.NET Windows.Forms samples.
  • Reworked our WCF Demo so that it now uses an ES generated WCF Service.

EntitySpaces

From Mobile Devices to large scale enterprise solutions in need of serious transaction support, EntitySpaces can meet your needs. Whether you’re writing an ASP.NET application with Medium Trust requirements, a Silverlight/WCF application, a Mono application, or a Windows.Forms application, the EntitySpaces architecture is there for you. EntitySpaces is provider independent, which means that you can run the same binary code against any of the supported databases. EntitySpaces is available in both C# and VB.NET. EntitySpaces uses no reflection, no XML files, and sports a tiny foot print of less than 300k. Pound for pound, EntitySpaces is one tough, dependable .NET architecture.

EntitySpaces LLC
Persistence Layer and Business Objects for Microsoft .NET
http://www.entityspaces.net

posted on Sunday, August 29, 2010 10:22:44 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]
 Wednesday, August 25, 2010

Although the ORMBattle.NET charts have not been updated yet we thought we would share the results with you. The stats shown below are the stats that they will use to update the charts on their site (they use the 1000 item tests). We think we did pretty well. The numbers shown below are from the ORMBattle.NET site.

First let’s talk about where EntitySpaces did really well.

BLT = BLToolkit
EF  = Microsoft Entity Framework
ES  = EntitySpaces
DO  = DataObjects.Net
LC  = LinqConnect
LS2 = LINQ to SQL
NH  = NHibernate
OA  = OpenAccess

SS = SubSonic

Our “Single Operation” Tests

Let’s first take a a look at the Single Operation CRUD performance tests. These are single entity updates. So, the first set of numbers highlighted in blue are our numbers and we scored very high. These numbers are very important because they represent 1000 entities being created, building the dynamic SQL to do the update/insert/delete, a wire trip to the database, and returning any modified fields such as identity columns. In other words, the full meal deal.

It is obvious from these numbers EntitySpaces can do this very efficiently. Our “Multiple Operation” tests are discussed below.


ormbattle


Our “Multiple Operation” Tests

We didn’t score as high here as we would have liked. It’s important to note that when saving a collection (a collection merely contains single entities) we use the exact same logic as when we save a single entity. So you must be thinking since we scored so well in the “Single Operation” tests why then aren’t we at the top of the “Multiple Operations” tests? Well, one of the nice things about EntitySpaces is that it truly only updates only those columns which are dirty. This means we created unique SQL for every single row (1000 of them in this case) when in reality we only needed to build the SQL one time since the test uses a for loop and changes the exact same columns for each row. However, even with this extra functionality we handily out performed the Microsoft Entity Framework, LINQ to SQL, and SubSonic. We are not sure if the other architectures updated only the modified columns or all columns, we suspect they update them all, but it really wont matter soon as you will see.

We have long known we could optimize here and that is exactly our plan. All we must to do is examine the ModifiedColumns collection of the previous row to see if we can reuse the same SQL statement. Once we do that our numbers will shoot up dramatically (and you will of course benefit). In fact, we expect to be at or near the top in that category as well on our next run. These changes are simple to make. Once we make these changes we will publish before and after numbers using the exact same code from the ORMBattle.NET site and publish those here so you can see the improvements, and we expect those to be dramatic. Once ORMBattle.NET does another round of testing these new numbers will be published there as well.

Native Query and Native Materialize Tests

We also scored very well in the Native Query test which uses our DynamicQuery API and we scored near the top in the Native Materialize test which does a LoadAll() on a collection and then merely does a foreach loop through each entity (this tests materializing each row). You can see how fast we are in those two tests and loading a large collection is extremely fast in EntitySpaces.

LINQ Tests

Note that there are no “n/a” entries for EntitySpaces. This is kind of interesting since most of our customers use our DynamicQuery API and not LINQ. However, we do support LINQ when the ADO.NET provider we are using supports it. This is true for 4 or 5 of the database systems we support.

Next Steps

Other than the “Multiple Operation” tests we have one other issue to fix, and that is when a massive collection “delete all” operation is performed. Our MarkAllAsDeleted() moves all of the deleted entities into a deleted list one by one. We can do this in one big operation instantly so that we’ll be fixed as well. We know we will drastically increase our collection save logic and we’ll post those numbers (before and after soon). First though, we need to get this weekend’s release out with our SQL Azure support.

After we make our next round of performance changes we expect EntitySpaces to be at or near the top in almost every category, and we’re already well on our way. This performance work will happen immediately after this weekends release, so stay tuned. Our entry into ORMBattle.NET fray is going to benefit you the customer because it’s something that we take very seriously. We are happy with round one, but round two is going to put us in a very good position.

EntitySpaces

From Mobile Devices to large scale enterprise solutions in need of serious transaction support, EntitySpaces can meet your needs. Whether you’re writing an ASP.NET application with Medium Trust requirements, a Silverlight/WCF application, a Mono application, or a Windows.Forms application, the EntitySpaces architecture is there for you. EntitySpaces is provider independent, which means that you can run the same binary code against any of the supported databases. EntitySpaces is available in both C# and VB.NET. EntitySpaces uses no reflection, no XML files, and sports a tiny foot print of less than 300k. Pound for pound, EntitySpaces is one tough, dependable .NET architecture.

EntitySpaces LLC
Persistence Layer and Business Objects for Microsoft .NET
http://www.entityspaces.net

posted on Wednesday, August 25, 2010 10:06:49 PM (Eastern Standard Time, UTC-05:00)  #    Comments [3]
 Monday, August 16, 2010

This release is recommended if your application is a Windows.Forms application. We fixed a bug that happened when the user pressed the “escape” key while editing in a grid. If you are upgrading from our 2010.1.0802.0 release there is no need to regenerate your classes.

EntitySpaces

From Mobile Devices to large scale enterprise solutions in need of serious transaction support, EntitySpaces can meet your needs. Whether you’re writing an ASP.NET application with Medium Trust requirements, a Silverlight/WCF application, a Mono application, or a Windows.Forms application, the EntitySpaces architecture is there for you. EntitySpaces is provider independent, which means that you can run the same binary code against any of the supported databases. EntitySpaces is available in both C# and VB.NET. EntitySpaces uses no reflection, no XML files, and sports a tiny foot print of less than 300k. Pound for pound, EntitySpaces is one tough, dependable .NET architecture.

EntitySpaces LLC
Persistence Layer and Business Objects for Microsoft .NET
http://www.entityspaces.net

posted on Monday, August 16, 2010 4:58:56 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0]
 Friday, August 13, 2010

The Microsoft SQL Server 2008 FILESTREAM type can be a bit tricky to figure out. Hopefully this post will help those interested in using it. The first thing you need to do is enable FILESTREAM in your SQL Server 2008 instance. The instructions can be found HERE.

Our next step was to create our SQL table for testing.

CREATE TABLE [dbo].[FileStreamEmployees]
(
    [EmployeeId] [int] NOT NULL,
    [Photo] [varbinary](max) FILESTREAM  NULL,
    [RowGuid] [uniqueidentifier] ROWGUIDCOL  NOT NULL
)

Notice that we have our Photo column set as our FILESTREAM column (shown above).

Our next step was of course to create our “Gnerated” and “Custom” classes. These classes are generated for you in seconds, see this video if you are new to EntitySpaces.

One of the tricks when working with SqlFileStream (which is located in the System.Data.SqlTypes namespace) is that it requires a transaction. So, what we did was make a tiny little class called esSqlFileStream that would hold onto both the esTransactionScope instance and the SqlFileStream instance. Let’s look at how all this works.

First, we created a sample record to play with.

// Create a sample record just for the demo
FileStreamEmployees emp = new FileStreamEmployees();
emp.EmployeeId = 1;
emp.Photo = new byte[] { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 };
emp.Save();

Now, let’s execute some code and see if we can read back the Photo column using streaming and not the entity itself.

//---------------------------------
// Let's test reading
//---------------------------------
esSqlFileStream stream = FileStreamEmployees.GetFileStream(1, FileAccess.Read);

int length = (int)stream.Length;
byte[] data = new byte[length + 1];

// Fill our data buffer
stream.Read(data, 0, length);
stream.Dispose();

Notice that we call a static method on our FileStreamEmployees entity named GetFileStream(). We added that to our Custom class. We’ll take a look at that method in just a moment. Also, we could have used the using() syntax on the esSqlFileStream object but we wanted to demonstrate how you could create an esSqlFileStream object and then pass it around to other methods if need be. This is why we needed to manually call Dispose on it in the sample above. 

Now, let’s execute some code and see if we can write to the Photo column using streaming (and without calling Save on the entity).

//---------------------------------
// Let's test writing
//---------------------------------
esSqlFileStream stream = FileStreamEmployees.GetFileStream(1, FileAccess.Write);

data = new byte[] { 0x08, 0x09, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15 };
stream.Write(data, 0, data.Length);
stream.Dispose();

Pretty simple looking really. There is one very important thing to note here. As long as you’re holding onto an esSqlFileStream there is a transaction open. So, you want to get in and out as fast as you can just as you would whenever you are holding a transaction open. Now, let’s take a look at our static GetFileStream() method which is located in our FileStreamEmployees Custom class.

using System;
using System.IO;
using System.Data.SqlTypes;

using EntitySpaces.Core;
using EntitySpaces.Interfaces;
using EntitySpaces.DynamicQuery;

namespace BusinessObjects
{

    // This is in our “Custom Class”
    public partial class FileStreamEmployees : esFileStreamEmployees
    {
        static public esSqlFileStream GetFileStream(int id, FileAccess access)
        {
            esSqlFileStream fileStream = new esSqlFileStream();

            FileStreamEmployeesQuery q = new FileStreamEmployeesQuery();
            q.Select("<Photo.PathName() as [Path]>", "<GET_FILESTREAM_TRANSACTION_CONTEXT() as [Context]>");
            q.Where(q.EmployeeId == id);

            FileStreamEmployees fsEmp = new FileStreamEmployees();
            fsEmp.Load(q);

            fileStream.Create((string)fsEmp.GetColumn("Path"),
                (byte[])fsEmp.GetColumn("Context"), access, FileOptions.SequentialScan, 0);

            return fileStream;
        }
    }
}

Notice that we use the “Raw SQL” feature to inject this very SQL Server specific code into our Select() statement. Remember that EntitySpaces is database independent and we try to avoid polluting the core with DBMS specific functions. Typically, you use very little or no “Raw SQL” in EntitySpaces. However, this mechanism is a really nice escape hatch when needed. Basically, the method above fetches the path to our Photo blob and uses the esTransactionScope transaction which is created in the constructor of the esSqlFileStream class.

Finally, let’s look at the esSqlFileStream class.

using System;
using System.Collections.Generic;
using System.Data.SqlTypes;
using System.IO;
using System.Linq;
using System.Text;

using EntitySpaces.Interfaces;

namespace BusinessObjects
{
    public class esSqlFileStream : IDisposable
    {
        public esSqlFileStream()
        {
            scope = new esTransactionScope();
        }

        public void Create(string path, byte[] transactionContext, FileAccess access, FileOptions options, long allocationSize)
        {
           stream = new SqlFileStream(path, transactionContext, access, options, 0);
        }

        public int Read(byte[] buffer, int offset, int count)
        {
            return stream.Read(buffer, offset, count);
        }

        public void Write(byte[] buffer, int offset, int count)
        {
            stream.Write(buffer, offset, count);
        }

        public long Length
        {
            get
            {
                return stream != null ? stream.Length : 0;
            }
        }

        public void Dispose()
        {
            stream.Close();
            stream.Dispose();
            scope.Complete();
        }

        private esTransactionScope scope;
        private SqlFileStream stream;
    }
}

Notice that there is no error handling in this sample code. We wanted to keep this simple so it could be easily understood. Basically, the esSqlFileStream class wraps the SqlFileStream and holds onto the esTransactionScope during its lifetime. You only need to remember to call Dispose() or use it within a using() statement.

This really isn’t a class that we’ll include in the EntitySpaces architecture. This post is merely to show one way to potentially work with SqlFileStream objects in your application, if you plan to use them. Comments are welcome …

EntitySpaces

From Mobile Devices to large scale enterprise solutions in need of serious transaction support, EntitySpaces can meet your needs. Whether you’re writing an ASP.NET application with Medium Trust requirements, a Silverlight/WCF application, a Mono application, or a Windows.Forms application, the EntitySpaces architecture is there for you. EntitySpaces is provider independent, which means that you can run the same binary code against any of the supported databases. EntitySpaces is available in both C# and VB.NET. EntitySpaces uses no reflection, no XML files, and sports a tiny foot print of less than 300k. Pound for pound, EntitySpaces is one tough, dependable .NET architecture.

EntitySpaces LLC
Persistence Layer and Business Objects for Microsoft .NET
http://www.entityspaces.net

posted on Friday, August 13, 2010 9:25:29 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]
 Sunday, August 08, 2010

We updated our Getting Started Video (which is also on our download page). The video uses EntitySpaces 2010 and Visual Studio 2010 and shows how within seven minutes you’re ready to run your first EntitySpaces application.

EntitySpaces

From Mobile Devices to large scale enterprise solutions in need of serious transaction support, EntitySpaces can meet your needs. Whether you’re writing an ASP.NET application with Medium Trust requirements, a Silverlight/WCF application, a Mono application, or a Windows.Forms application, the EntitySpaces architecture is there for you. EntitySpaces is provider independent, which means that you can run the same binary code against any of the supported databases. EntitySpaces is available in both C# and VB.NET. EntitySpaces uses no reflection, no XML files, and sports a tiny foot print of less than 300k. Pound for pound, EntitySpaces is one tough, dependable .NET architecture.

EntitySpaces LLC
Persistence Layer and Business Objects for Microsoft .NET
http://www.entityspaces.net

posted on Sunday, August 08, 2010 4:40:53 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]
 Sunday, August 01, 2010

This is a minor release, there is no need to upgrade unless you need one of the fixes below. The fixes are as follows:

The Trial version for 2010.1.0802.0 will be posted late Sunday night, you will know it has been posted when the Trial Download page has the proper version on it.

EntitySpaces

From Mobile Devices to large scale enterprise solutions in need of serious transaction support, EntitySpaces can meet your needs. Whether you’re writing an ASP.NET application with Medium Trust requirements, a Silverlight/WCF application, a Mono application, or a Windows.Forms application, the EntitySpaces architecture is there for you. EntitySpaces is provider independent, which means that you can run the same binary code against any of the supported databases. EntitySpaces is available in both C# and VB.NET. EntitySpaces uses no reflection, no XML files, and sports a tiny foot print of less than 300k. Pound for pound, EntitySpaces is one tough, dependable .NET architecture.

EntitySpaces LLC
Persistence Layer and Business Objects for Microsoft .NET
http://www.entityspaces.net

posted on Sunday, August 01, 2010 12:55:23 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]
 Sunday, July 25, 2010

This is a minor release, there is no need to upgrade unless you need one of the fixes below. The fixes are as follows:

  • The WCF Client Side Proxy Patch is included (it was not included with 2010.1.0720.0)
  • The namespace "Proxies" was hard coded in the client proxy template, this was fixed.
  • The “char” modified column count error has been fixed.
  • The case sensitive bug when returning columns with a different case than defined in the actual table error has been fixed.

The Trial version is still 2010.1.0720.0

EntitySpaces

From Mobile Devices to large scale enterprise solutions in need of serious transaction support, EntitySpaces can meet your needs. Whether you’re writing an ASP.NET application with Medium Trust requirements, a Silverlight/WCF application, a Mono application, or a Windows.Forms application, the EntitySpaces architecture is there for you. EntitySpaces is provider independent, which means that you can run the same binary code against any of the supported databases. EntitySpaces is available in both C# and VB.NET. EntitySpaces uses no reflection, no XML files, and sports a tiny foot print of less than 300k. Pound for pound, EntitySpaces is one tough, dependable .NET architecture.

EntitySpaces LLC
Persistence Layer and Business Objects for Microsoft .NET
http://www.entityspaces.net

posted on Sunday, July 25, 2010 10:39:06 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]
 Friday, July 23, 2010

A cool way to play around with the EntitySpaces DynamicQuery API is to use LINQPad, which is a free tool. It’s easy to setup and with the addition of the DynamicQuery.Parse() method on the query object some time back you can now ask the EntitySpaces Provider to produce the SQL for a query without actually executing it. Here’s a quick preview.

Below is the LINQPad Window containing all of the code necessary to execute our simple query.

Main

Below are the things we had to do get LINQPad to execute our query. It only takes a few minutes.

  1. Setup the Loader.
  2. Register a connection (no connection string required, you just need enough to load the ES provider)
  3. Type in the Query
  4. Call the Parse() method

When you click the “Green Arrow” on the toolbar your query executes and you can see the SQL generated in the results pane at the bottom of the window.

There were two other one time operations we needed to perform. We had to add a few references and a few namespaces, that’s it. The next two screens show how to accomplished this.

references

Notice the references we added. We needed to add the System.Configuration namespace because the classes in EntitySpaces that allow you to manually setup a connection string require it. Unfortunately, we had to browse directly to the assembly on disk, it’s not like adding a reference in Visual Studio where it lists everything in the GAC. We then added the required EntitySpaces assemblies. Finally, we added our BusinessObjects class library which contains the EntitySpaces generated and custom classes. You need to place your entities into a class library so you can add a reference to it. This only takes a few seconds. Create a class library, click on your generated and custom folders from your main solution and just copy them into your BusinessObjects solution, add the EntitySpaces references and compile.

namespaces

Next we added the required Namespaces. However, and important be sure to click the “Set as default for new queries” button and you’ll never have to add assemblies or namespaces again, you’ll have your EntitySpaces DynamicQuery playground tool all setup for future use.

Finally, we could have added all of the EntitySpaces DataProviders and not just EntitySpaces.SqlClientProvider.dll and then we could just change the “conn.Provider” value in the code and we could see what the resulting SQL would look like for SQLite, Sybase, Oracle and so on … 

We didn’t try the intellisense add-on for LINQPad but we assume that would work fine, but we do not know for sure, perhaps we’ll try it soon and report back. Also, we’ve got some great idea’s cooked up for the EntitySpaces “Winter Brew” version, more on that later.

For those that want to try this here is the source code in the above window to make it easy on you …

esProviderFactory.Factory = new esDataProviderFactory();

// Just enough to Load the Provider
esConnectionElement conn = new esConnectionElement();
conn.Name = "SQL";
conn.Provider = "EntitySpaces.SqlClientProvider";
conn.ProviderClass = "DataProvider";
conn.SqlAccessType = esSqlAccessType.DynamicSQL;
conn.ProviderMetadataKey = "esDefault";

esConfigSettings.ConnectionInfo.Connections.Add(conn);
esConfigSettings.ConnectionInfo.Default = "SQL";

// THE ACTUAL QUERY
EmployeesQuery q = new EmployeesQuery();
q.es.Top = 15;
q.Select(q.EmployeeID, q.FirstName, q.BirthDate.As("ExtraColumn"));

// Ask the provider to produce the SQL
string sql = q.Parse();

Console.WriteLine(sql);

EntitySpaces

From Mobile Devices to large scale enterprise solutions in need of serious transaction support, EntitySpaces can meet your needs. Whether you’re writing an ASP.NET application with Medium Trust requirements, a Silverlight/WCF application, a Mono application, or a Windows.Forms application, the EntitySpaces architecture is there for you. EntitySpaces is provider independent, which means that you can run the same binary code against any of the supported databases. EntitySpaces is available in both C# and VB.NET. EntitySpaces uses no reflection, no XML files, and sports a tiny foot print of less than 300k. Pound for pound, EntitySpaces is one tough, dependable .NET architecture.

EntitySpaces LLC
Persistence Layer and Business Objects for Microsoft .NET
http://www.entityspaces.net

posted on Friday, July 23, 2010 1:12:57 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]
 Thursday, July 22, 2010
conferenceWe have been receiving inquiries regarding training and we thought we would start by offering a special session that will cover using EntitySpaces in WCF and Silverlight scenarios.

This presentation will cover when and why to use our client side proxies versus the server side proxies, alternative ways to write generic WCF proxies, and using our serializable DynamicQueries over the wire.

Of course, we will cover more than just WCF and Silverlight. We will also touch on the many ways to deal with database connections, the many ways to custom load data, the hierarchical model, and how to write database independent applications using EntitySpaces 2010.

Finally, we will discuss our roadmap for the future and give you a chance to provide us with some feedback. We will leave time for a question and answer session as well.

The conference will be held in Indianapolis, Indiana on the North side and will be free of charge. We are unsure on the date as of yet. We would really like to get a handle on how many are interested in attending the conference so we can reserve the proper sized facility. If you are interested in attending please send an email to mike.griffin@entityspaces.net with the word “Conference” in the subject to reserve your spot and let us know how many from your office would like to attend.

 

EntitySpaces

From Mobile Devices to large scale enterprise solutions in need of serious transaction support, EntitySpaces can meet your needs. Whether you’re writing an ASP.NET application with Medium Trust requirements, a Silverlight/WCF application, a Mono application, or a Windows.Forms application, the EntitySpaces architecture is there for you. EntitySpaces is provider independent, which means that you can run the same binary code against any of the supported databases. EntitySpaces is available in both C# and VB.NET. EntitySpaces uses no reflection, no XML files, and sports a tiny foot print of less than 300k. Pound for pound, EntitySpaces is one tough, dependable .NET architecture.

EntitySpaces LLC
Persistence Layer and Business Objects for Microsoft .NET
http://www.entityspaces.net

posted on Thursday, July 22, 2010 10:08:23 PM (Eastern Standard Time, UTC-05:00)  #    Comments [3]
 Monday, July 05, 2010

This release does not provide any changes to the EntitySpaces architecture. The architecture is still versioned 2010.1.0628.0. However, we did have some changes to tools and we needed to cut this maintenance release for that reason. It is not necessary to regenerate your code if you are upgrading from 2010.1.0628.0. Finally, unless you need one of the changes listed below there is no need to upgrade.

The changes are as follows:

  • The WCF Templates now handle views properly
  • There was a bug on some machines that would not allow them to run offline, this has been fixed.

Also …

Proxy Server/Firewall Support for Licensing

proxyserver

You can supply your companies proxy information in order to validate you license. The proxy server connection settings are encrypted in the settings file and not laying around in plain text.

EntitySpaces

From Mobile Devices to large scale enterprise solutions in need of serious transaction support, EntitySpaces can meet your needs. Whether you’re writing an ASP.NET application with Medium Trust requirements, a Silverlight/WCF application, a Mono application, or a Windows.Forms application, the EntitySpaces architecture is there for you. EntitySpaces is provider independent, which means that you can run the same binary code against any of the supported databases. EntitySpaces is available in both C# and VB.NET. EntitySpaces uses no reflection, no XML files, and sports a tiny foot print of less than 300k. Pound for pound, EntitySpaces is one tough, dependable .NET architecture.

EntitySpaces LLC
Persistence Layer and Business Objects for Microsoft .NET
http://www.entityspaces.net

posted on Monday, July 05, 2010 8:36:36 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]
 Sunday, June 27, 2010

We are pleased to announce the release of EntitySpaces 2010. EntitySpaces 2009 and 2010 run side by side just fine, so you can have them both installed. The official release is version 2010.1.0628.0 and is available for purchase now (or download by existing customers).

Features and Changes

  • Added support for .NET 4.0 and dropped support for .NET 2.0
  • Visual Studio AddIn runs in VS2005/VS2008/VS2010.
  • Added support for SQLite.
  • Improvements to our proxies (row and column level dirty state tracking) for even better Silverlight and WCF support.
  • Proxies support extended columns (brought back by dynamic queries) and even allow binding under Silverlight and WPF.
  • Ships with a template that can generate your WCF Templates which support EntitySpaces out of the box.
  • Project files are now path relative.
  • Enhanced debugging features.
  • Cross Catalog/Schema DynamicQuery support.
  • Re-architected such that our entities and collections no longer contain DataTable’s and DataRow’s for data storage.
  • Our collections now implement IList<T>
  • You can now filter and sort collections with IQueryable using sophisticated LINQ expressions.
  • Many other changes and fixes.
  • EntitySpaces 2010 now requires a license key, all existing customers should have their key(s) on their “my licenses” page.
    See this post for more details: click here …

The release notes can be found Here …

Sample Applications Provider

  • Windows Forms (C#/VB)
  • Silverlight (C#/VB)
  • esDataSource (C#/VB), this is our custom data source control
  • Compact Framework (C#)
  • WCF Sample (C#)

Preview Videos

During development we published some preview videos that you might want to watch for more details.

EntitySpaces 2010 Sneak Preview (I)
EntitySpaces 2010 Sneak Preview (II)
EntitySpaces 2010 Sneak Preview (III)
EntitySpaces 2010 Sneak Preview (IV)

Databases Supported

  • Microsoft SQL Server / SQL CE
  • Microsoft Access
  • Oracle
  • MySQL
  • VistaDB
  • PostgreSQL
  • Sybase SQL Anywhere
  • SQLite


Please note that the source code is not yet available for download, for those customers with download rights to the source it will be available soon, we just need to update the installer.

EntitySpaces

From Mobile Devices to large scale enterprise solutions in need of serious transaction support, EntitySpaces can meet your needs. Whether you’re writing an ASP.NET application with Medium Trust requirements, a Silverlight/WCF application, a Mono application, or a Windows.Forms application, the EntitySpaces architecture is there for you. EntitySpaces is provider independent, which means that you can run the same binary code against any of the supported databases. EntitySpaces is available in both C# and VB.NET. EntitySpaces uses no reflection, no XML files, and sports a tiny foot print of less than 300k. Pound for pound, EntitySpaces is one tough, dependable .NET architecture.

EntitySpaces LLC
Persistence Layer and Business Objects for Microsoft .NET
http://www.entityspaces.net

posted on Sunday, June 27, 2010 9:55:23 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]
 Thursday, June 10, 2010

We are often asked about enterprise licensing and we are glad to be able to offer two new enterprise licensing options. These options won’t be available until after we ship EntitySpaces 2010 which is tentatively scheduled for June 21st. However, the trial version is available now. The trial is our EntitySpaces 2010 beta and it’s very stable. All customers have access to the EntitySpaces 2010 beta as well via our downloads section. So you can get started now with the trial version. The trial is fully functional and you can purchase an Enterprise License once we ship if you are interested in an enterprise license. Otherwise you can purchase today as usual if you are not interested in an enterprise license. For larger shops, the Enterprise Licensing options are very attractive.

Enterprise Level 1 - $2,999.00

15 licenses + Source to the EntitySpaces Architecture assemblies

Enterprise Level 2 - $4,999.00

50 Licenses + Source to the EntitySpaces Architecture assemblies


Advantages of an Enterprise License

Shown below is our pricing structure with the proper discounts if you were to purchase in bulk without the advantage of one of our new Enterprise licensing options. The individual pricing shown below still exists and is valid. Keep in mind that the source code (currently not available for sale until the new Enterprise licenses go online) was $499.00. So, in the past, if you wanted to purchase the equivalent of our Enterprise Level 1 license you would have had to pay $3,588.00 + 499.00 for the source. However, once we ship EntitySpaces 2010 you can purchase the same value for only $2,999.00.

Price Quantiy Discount Total
299 1 0.00% $299.00
299 2 10.00% $538.20
299 3 10.00% $807.30
299 4 10.00% $1,076.40
299 5 20.00% $1,196.00
299 6 20.00% $1,435.20
299 7 20.00% $1,674.40
299 8 20.00% $1,913.60
299 9 20.00% $2,152.80
299 10 20.00% $2,392.00
299 11 20.00% $2,631.20
299 12 20.00% $2,870.40
299 13 20.00% $3,109.60
299 14 20.00% $3,348.80
299 15 20.00% $3,588.00
299 16 20.00% $3,827.20
299 17 20.00% $4,066.40
299 18 20.00% $4,305.60
299 19 20.00% $4,544.80
299 20 20.00% $4,784.00

The Source code will no longer be for sale as individual purchase, it will only be available to Enterprise License holders. If you currently have a source code license you will still be able to download the source code. However, your renewal will be at the new Enterprise Licensing model price once your current license expires.

EntitySpaces

From Mobile Devices to large scale enterprise solutions in need of serious transaction support, EntitySpaces can meet your needs. Whether you’re writing an ASP.NET application with Medium Trust requirements, a Silverlight/WCF application, a Mono application, or a Windows.Forms application, the EntitySpaces architecture is there for you. EntitySpaces is provider independent, which means that you can run the same binary code against any of the supported databases. EntitySpaces is available in both C# and VB.NET. EntitySpaces uses no reflection, no XML files, and sports a tiny foot print of less than 200k. Pound for pound, EntitySpaces is one tough, dependable .NET architecture.

EntitySpaces LLC
Persistence Layer and Business Objects for Microsoft .NET
http://www.entityspaces.net

posted on Thursday, June 10, 2010 9:55:20 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]
 Monday, May 31, 2010

The fixes and changes are as follows:

  • The ListChanged event handling was improved.
  • The WebAdmin Grid templates were fixed and the GridLoader projects are now included (they are not on the menu yet and can be found in the samples folder).
  • Getting started document was updated with ES2010 screen shots.
  • Many fixes in the VB.NET templates (fixes in FindByPrimaryKey/LoadByPrimaryKey).

EntitySpaces

From Mobile Devices to large scale enterprise solutions in need of serious transaction support, EntitySpaces can meet your needs. Whether you’re writing an ASP.NET application with Medium Trust requirements, a Silverlight/WCF application, a Mono application, or a Windows.Forms application, the EntitySpaces architecture is there for you. EntitySpaces is provider independent, which means that you can run the same binary code against any of the supported databases. EntitySpaces is available in both C# and VB.NET. EntitySpaces uses no reflection, no XML files, and sports a tiny foot print of less than 200k. Pound for pound, EntitySpaces is one tough, dependable .NET architecture.

EntitySpaces LLC
Persistence Layer and Business Objects for Microsoft .NET
http://www.entityspaces.net

posted on Monday, May 31, 2010 5:44:52 PM (Eastern Standard Time, UTC-05:00)  #    Comments [1]
 Tuesday, May 25, 2010

No Registration Required … Simply click HERE to download your copy today …

Product Features

Databases Supported

  • Microsoft SQL Server / SQL CE
  • Microsoft Access
  • Oracle
  • MySQL
  • VistaDB
  • PostgreSQL
  • Sybase SQL Anywhere
  • SQLite

EntitySpaces

From Mobile Devices to large scale enterprise solutions in need of serious transaction support, EntitySpaces can meet your needs. Whether you’re writing an ASP.NET application with Medium Trust requirements, a Silverlight/WCF application, a Mono application, or a Windows.Forms application, the EntitySpaces architecture is there for you. EntitySpaces is provider independent, which means that you can run the same binary code against any of the supported databases. EntitySpaces is available in both C# and VB.NET. EntitySpaces uses no reflection, no XML files, and sports a tiny foot print of less than 200k. Pound for pound, EntitySpaces is one tough, dependable .NET architecture.

EntitySpaces LLC
Persistence Layer and Business Objects for Microsoft .NET
http://www.entityspaces.net

posted on Tuesday, May 25, 2010 9:32:02 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]
 Monday, May 24, 2010

All customers may now download and install the EntitySpaces 2010 beta. If you are currently running an Early Adopter release we recommend that you upgrade to the beta release. You can download it under the "Products" menu under "Downloads". You can run ES2009 and ES2010 side by side, they do not interfere with each other. There are release notes on the "EntitySpaces 2010" menu after installation and there are a few breaking changes if you are moving from ES2009 to ES2010. If no problems are reported we plan to release this as our current Trial version.

The release notes for moving from ES2009 to ES2010 can be found HERE. They can also be found on your “EntitySpaces 2010” Windows menu after installation.

EntitySpaces

From Mobile Devices to large scale enterprise solutions in need of serious transaction support, EntitySpaces can meet your needs. Whether you’re writing an ASP.NET application with Medium Trust requirements, a Silverlight/WCF application, a Mono application, or a Windows.Forms application, the EntitySpaces architecture is there for you. EntitySpaces is provider independent, which means that you can run the same binary code against any of the supported databases. EntitySpaces is available in both C# and VB.NET. EntitySpaces uses no reflection, no XML files, and sports a tiny foot print of less than 200k. Pound for pound, EntitySpaces is one tough, dependable .NET architecture.

EntitySpaces LLC
Persistence Layer and Business Objects for Microsoft .NET
http://www.entityspaces.net

posted on Sunday, May 23, 2010 11:49:31 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]
 Saturday, May 08, 2010

First, none of this applies unless you are using our client side proxies via a WCF Service in a WPF application. If you are using our normal server side business objects then binding to any and all properties including extra properties will work just fine in your WPF application. This post has a very narrow scope.

There was a post on our forums about binding to “extra properties” that are brought back via our cool DynamicQuery API through a WCF Service to a WPF application in this way, we thought we would use a blog post to answer it. We can bind to extra properties in WPF and Silverlight via our client side proxies just fine. EntitySpaces performs excellent in this area and makes your Silverlight and WPF application programming a breeze. Let’s take a look at a sample. In this sample we used Visual Studio 2010 because it is so much better when it comes to WPF applications. However, we do show the Visual Studio 2008 equivalent as well. This sample may look cheesy but we wanted to keep the clutter out of the example.

The design time UI

WPF_UI

The XAML Code

Visual Studio 2010 XAML Code

All we have done is dropped a DataGrid on the form, then we went into the XAML and added the proper code, see below:

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:es="clr-namespace:EntitySpaces.DynamicQuery;assembly=EntitySpaces.DynamicQuery"       
         Title="MainWindow" Height="350" Width="525">
    <Grid>

        <Grid.Resources>
            <es:esExtraPropertyBinder x:Key="PropertyBinder" />
        </Grid.Resources>

        <DataGrid AutoGenerateColumns="False" Height="287" HorizontalAlignment="Left" Margin="31,12,0,0"
                  Name="dataGrid1" VerticalAlignment="Top" Width="460"
                  DataContext="{Binding}" ItemsSource="{Binding}" IsTextSearchEnabled="True">

            <DataGrid.Columns>

                <DataGridTextColumn
                    Binding="{Binding ExtraColumns, Converter={StaticResource PropertyBinder}, ConverterParameter=Fullname}"
                    Header="Fullname" />

            </DataGrid.Columns>

        </DataGrid>
    </Grid>
</Window>

Visual Studio 2008 XAML Code

<Window x:Class="WPFDemo.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="EntitySpaces 2010 WPF Sample" Height="380" Width="489"
    xmlns:WpfToolKit="http://schemas.microsoft.com/wpf/2008/toolkit"
    xmlns:es="clr-namespace:EntitySpaces.DynamicQuery;assembly=EntitySpaces.DynamicQuery"       
    DataContext="{Binding RelativeSource={RelativeSource Self}}" >

    <Grid Name="grid">

        <Grid.Resources>
            <es:esExtraPropertyBinder x:Key="PropertyBinder" />
        </Grid.Resources>

        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="100" />
            <ColumnDefinition Width="100" />
            <ColumnDefinition Width="100" />
        </Grid.ColumnDefinitions>

        <TextBlock Text="{Binding Path=EmployeeID}" FontWeight="Bold"  />
        <TextBlock Text="{Binding Path=FirstName}" Grid.Column="1" />

        <TextBlock Grid.Column="2"
           Text="{Binding Path=ExtraColumns, Converter={StaticResource PropertyBinder}, ConverterParameter=Fullname}"/>
    </Grid>

</Window>

 

The Code Behind for our XAML

Rather that actually complicating this sample with a ton of code we merely manually create a client proxy and simulate an extra property, in this case, the Fullname property.

using EntitySpaces.DynamicQuery;
using System.ComponentModel;
using BusinessObjects;

namespace WpfApplication1
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            Proxies.EmployeesCollectionProxyStub proxy = new Proxies.EmployeesCollectionProxyStub();

            // Manually create a client side proxy
            Proxies.EmployeesProxyStub e = new Proxies.EmployeesProxyStub();
            e.FirstName = "Mike";
            e.EmployeeID = 1;
            e.ExtraColumns["Fullname"] = "Griffin, Mike"; // <== Simulate the extra columm
            proxy.Collection.Add(e);

            InitializeComponent();

            this.dataGrid1.DataContext = proxy.Collection;
        }
    }
}

The Executing WPF Program

WPF_UI_II

Notice that we can see “Griffin, Mike” in our WPF Grid although there is not a “Fullname” property on the Client side proxy. 

EntitySpaces

From Mobile Devices to large scale enterprise solutions in need of serious transaction support, EntitySpaces can meet your needs. Whether you’re writing an ASP.NET application with Medium Trust requirements, a Silverlight/WCF application, a Mono application, or a Windows.Forms application, the EntitySpaces architecture is there for you. EntitySpaces is provider independent, which means that you can run the same binary code against any of the supported databases. EntitySpaces is available in both C# and VB.NET. EntitySpaces uses no reflection, no XML files, and sports a tiny foot print of less than 200k. Pound for pound, EntitySpaces is one tough, dependable .NET architecture.

EntitySpaces LLC
Persistence Layer and Business Objects for Microsoft .NET
http://www.entityspaces.net

posted on Saturday, May 08, 2010 4:11:10 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]
 Tuesday, May 04, 2010

This video gives you a quick look at our unit testing suite we use to perform regression testing against all of our supported databases. It’s pretty exhaustive and is being expanded upon all of the time. Something really cool about these unit tests are that they use our provider independent support, that is, we use the same physical binary against all of our supported databases. We have created the same databases (same schema) for all of our supported databases.

Click on the image above to watch the video. You can also download it in a zip file (here) to watch it locally if you desire. One feature we do show in the unit test video is new to ES2010, the ability to save a collection and not have bad records cause the entire batch to fail.

EntitySpaces

From Mobile Devices to large scale enterprise solutions in need of serious transaction support, EntitySpaces can meet your needs. Whether you’re writing an ASP.NET application with Medium Trust requirements, a Silverlight/WCF application, a Mono application, or a Windows.Forms application, the EntitySpaces architecture is there for you. EntitySpaces is provider independent, which means that you can run the same binary code against any of the supported databases. EntitySpaces is available in both C# and VB.NET. EntitySpaces uses no reflection, no XML files, and sports a tiny foot print of less than 200k. Pound for pound, EntitySpaces is one tough, dependable .NET architecture.

EntitySpaces LLC
Persistence Layer and Business Objects for Microsoft .NET
http://www.entityspaces.net

posted on Tuesday, May 04, 2010 10:52:19 PM (Eastern Standard Time, UTC-05:00)  #    Comments [1]
 Saturday, April 17, 2010

We would like to take a moment an introduce a new template (currently only available in C#) that comes with EntitySpaces 2010. This template is included in the Early Adopter II release which is now available for download. This template can generate your WCF Service(s) for you. We even used this template to generate the WCFService for our C# Silverlight sample application. Let’s take a look at how it works.

wcfblogpost

We have highlighted the two key data entry fields in red. The first one is the “WCF Service Class Namespace” and the second one is the “WCF Service Class Name”. The screen shot above is exactly how we populated these two fields when we generated our WCF Service contained in our C# Silverlight sample application.

wcfblogpost_2

You can see how our data entry values are used in generating the WCF Service class. In this sample we only selected one table, the Employees table. We could have however selected all of the tables. Had we selected all the tables there would have been a region for each table in the WCF Service containing the service methods for each table.

There are five methods generated for each given table you select:

wcfblogpost_3

Finally, our WCF Template follows the ASPX implemented WCF Service model. There are three files created by this template, in our case the files were as follows (filenames are based on the “WCF Service Class Name” that you enter in the template UI)

  1. INorthwind.cs
  2. Northwind.svc
  3. Northwind.svc.cs

We realize that such a template is probably something you will end up tweaking or changing. Something we have planned for a future ES2010 release is making templates much easier to work with. But more on that at a later time.

EntitySpaces

From Mobile Devices to large scale enterprise solutions in need of serious transaction support, EntitySpaces can meet your needs. Whether you’re writing an ASP.NET application with Medium Trust requirements, a Silverlight/WCF application, a Mono application, or a Windows.Forms application, the EntitySpaces architecture is there for you. EntitySpaces is provider independent, which means that you can run the same binary code against any of the supported databases. EntitySpaces is available in both C# and VB.NET. EntitySpaces uses no reflection, no XML files, and sports a tiny foot print of less than 200k. Pound for pound, EntitySpaces is one tough, dependable .NET architecture.

EntitySpaces LLC
Persistence Layer and Business Objects for Microsoft .NET
http://www.entityspaces.net

posted on Saturday, April 17, 2010 7:46:05 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0]
 Wednesday, April 14, 2010

ES2010_VS2010

This is a snapshot of EntitySpaces 2010 running inside of Visual Studio 2010, of course it runs inside of VS2008 and VS2005 as well.

EntitySpaces

From Mobile Devices to large scale enterprise solutions in need of serious transaction support, EntitySpaces can meet your needs. Whether you’re writing an ASP.NET application with Medium Trust requirements, a Silverlight/WCF application, a Mono application, or a Windows.Forms application, the EntitySpaces architecture is there for you. EntitySpaces is provider independent, which means that you can run the same binary code against any of the supported databases. EntitySpaces is available in both C# and VB.NET. EntitySpaces uses no reflection, no XML files, and sports a tiny foot print of less than 200k. Pound for pound, EntitySpaces is one tough, dependable .NET architecture.

EntitySpaces LLC
Persistence Layer and Business Objects for Microsoft .NET
http://www.entityspaces.net

posted on Tuesday, April 13, 2010 11:26:14 PM (Eastern Standard Time, UTC-05:00)  #    Comments [1]
 Thursday, March 11, 2010

The dates are as follows:

March 29th - Early Adopter Program

The early adopter release will be available to a limited set of EntitySpaces customers who have a real need for some of the new or enhanced EntitySpaces 2010 features (such as Silverlight, WCF, Smart Proxies, SQLite, JSON serialization). We are looking for customers who desire to upgrade to ES2010 now and continue developing through to release. Prime candidates are new customers working on projects that haven’t shipped yet who can easily upgrade and begin working with ES2010. If you are interested in participating in our Early Adopter Program please send an email to earlyadopter@entityspaces.net with your EntitySpaces user id and how you plan to use EntitySpaces 2010. Not everyone who sends an email will be chosen to participate. Again, we are looking for users who are really going to use this version for development. We are seeking about 20 users to participate and they will be hand picked based on the email we receive explaining how ES2010 will be used. For example, we are interested in Windows Forms, ASP.NET, Silverlight, and so on, in other words, a good cross section of development. Current forum participation will also help in being chosen (active users).

Keep in mind that EntitySpaces 2010 will not support .NET 2.0, it’s .NET 3.5 and forward. We are unsure at this point if .NET 4.0 assemblies will be included in the Early Adopter Program.

April 19th  – Public Beta (customers only)

We are planning on only one beta. This beta will be available to all customers. We realize that the beta window looks short here but this release will have passed all of our unit tests and will have been pretty heavily used by those participating in the Early Adopter Program.

April 29th – Official Release

This is our official release. The EntitySpaces 2010 Trial version will also be available as well for the general public.

 

EntitySpaces

From Mobile Devices to large scale enterprise solutions in need of serious transaction support, EntitySpaces can meet your needs. Whether you’re writing an ASP.NET application with Medium Trust requirements, a Silverlight/WCF application, a Mono application, or a Windows.Forms application, the EntitySpaces architecture is there for you. EntitySpaces is provider independent, which means that you can run the same binary code against any of the supported databases. EntitySpaces is available in both C# and VB.NET. EntitySpaces uses no reflection, no XML files, and sports a tiny foot print of less than 200k. Pound for pound, EntitySpaces is one tough, dependable .NET architecture.

EntitySpaces LLC
Persistence Layer and Business Objects for Microsoft .NET
http://www.entityspaces.net

posted on Thursday, March 11, 2010 11:54:38 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]
 Monday, March 08, 2010
screenshot

We hope to announce a release date for EntitySpaces 2010 very soon.

We now handle schemas better and allow you to have the same table or view name in multiple schemas. You can see the Address table selected twice (in different schemas) in the Custom Template to the right. They will both create an Address.cs file so you would need to generate each schema into a different folder, but it’s great that this all works now.

We working our way through the wish list and we have switched to the Tarma Installer which we really like.

 

EntitySpaces

From Mobile Devices to large scale enterprise solutions in need of serious transaction support, EntitySpaces can meet your needs. Whether you’re writing an ASP.NET application with Medium Trust requirements, a Silverlight/WCF application, a Mono application, or a Windows.Forms application, the EntitySpaces architecture is there for you. EntitySpaces is provider independent, which means that you can run the same binary code against any of the supported databases. EntitySpaces is available in both C# and VB.NET. EntitySpaces uses no reflection, no XML files, and sports a tiny foot print of less than 200k. Pound for pound, EntitySpaces is one tough, dependable .NET architecture.

EntitySpaces LLC
Persistence Layer and Business Objects for Microsoft .NET
http://www.entityspaces.net

posted on Monday, March 08, 2010 8:27:55 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]
 Wednesday, March 03, 2010

We get a lot of questions about JSON serialization so we thought we would do a blog post on it. This code was executed using EntitySpaces 2010 but it should work the same for EntitySpaces 2009. We used the the NET 3.5 JSON serializer "DataContractJsonSerializer" located in the “System.Runtime.Serialization.Json” namespace which is in the “System.ServiceModel.Web” assembly.

Let’s take a look at a easy sample.

Employees emp = new Employees();
emp.Query.es.Top = 1;
emp.Query.Select
(
    emp.Query.EmployeeID, emp.Query.FirstName,  emp.Query.LastName, emp.Query.HireDate,
    (emp.Query.LastName + ", " + emp.Query.FirstName).As("Fullname")
);
emp.Query.Load();

// Modify the first name ...
emp.FirstName = "Freddy";

// Serialize it using our EmployeesProxyStub
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(EmployeesProxyStub));
MemoryStream ms = new MemoryStream();
ser.WriteObject(ms, (EmployeesProxyStub)emp); // Cast it (we have a built in cast operator)

string json = Encoding.Default.GetString(ms.ToArray());
ms.Close();

// Convert it back into an object
MemoryStream ms = new MemoryStream(Encoding.Unicode.GetBytes(json));

ser = new DataContractJsonSerializer(typeof(EmployeesProxyStub));
EmployeesProxyStub empProxy = ser.ReadObject(ms) as EmployeesProxyStub;
ms.Close();

Employees emp2 = empProxy.Entity;  // Now we have a reconstituted object

This is what the Empoyee object looks like when serialized in JSON …

{"EmployeeID":1,"LastName":"Burns","FirstName":"Freddy","HireDate":"\/Date(704692800000-0400)\/",
"esRowState":"Modified","ModifiedColumns":["FirstName"],"ExtraColumns":[{"Key":"Fullname","Value":"Burns, Fred"}]}

It also deserializes just fine. You can do the same thing with our Collections, you just would just use the EmployeesCollectionProxyStub and the EmployeesCollection classes.

EntitySpaces

From Mobile Devices to large scale enterprise solutions in need of serious transaction support, EntitySpaces can meet your needs. Whether you’re writing an ASP.NET application with Medium Trust requirements, a Silverlight/WCF application, a Mono application, or a Windows.Forms application, the EntitySpaces architecture is there for you. EntitySpaces is provider independent, which means that you can run the same binary code against any of the supported databases. EntitySpaces is available in both C# and VB.NET. EntitySpaces uses no reflection, no XML files, and sports a tiny foot print of less than 200k. Pound for pound, EntitySpaces is one tough, dependable .NET architecture.

EntitySpaces LLC
Persistence Layer and Business Objects for Microsoft .NET
http://www.entityspaces.net

posted on Wednesday, March 03, 2010 9:29:24 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]
 Tuesday, March 02, 2010

Warning: A feeling of euphoric power coupled with feelings of invincibility have been noted by the EntitySpaces Development Team when using EntitySpaces 2010. This will be especially true for those customers using Silverlight and WCF together. The interaction between these technologies and EntitySpaces 2010 could prove to be more than some customers can handle. Please check with your IT staff to make sure this combination is safe for you.

Also, the performance increase in EntitySpaces 2010 is significant, customers are urged to throttle back and work their dosage up slowly to maximum as to not overwhelm their DBMS systems.

Finally, in more extreme cases developers have been seen ‘strutting’ down hallways trash talking wildly about how their product is going to destroy their competition. Other signs may include finishing tasks way ahead of schedule, begging team leads incessantly for more work to do, and working seven, dare we say, six hour days, and spending more time with their families.

If you recognize any of these symptoms don’t be alarmed, instead be sure to pat the developer on the back and say to them “Job well done”. If your competition is getting ahead and your company is still struggling you might try to find out if there development team is all hopped up on EntitySpaces. If they’re winning bid after bid and you’re losing out to them there is a good chance this is the case. The good news is you too have the same access to EntitySpaces, no prescription required.

Please, use EntitySpaces 2010 responsibly.

EntitySpaces

From Mobile Devices to large scale enterprise solutions in need of serious transaction support, EntitySpaces can meet your needs. Whether you’re writing an ASP.NET application with Medium Trust requirements, a Silverlight/WCF application, a Mono application, or a Windows.Forms application, the EntitySpaces architecture is there for you. EntitySpaces is provider independent, which means that you can run the same binary code against any of the supported databases. EntitySpaces is available in both C# and VB.NET. EntitySpaces uses no reflection, no XML files, and sports a tiny foot print of less than 200k. Pound for pound, EntitySpaces is one tough, dependable .NET architecture.

EntitySpaces LLC
Persistence Layer and Business Objects for Microsoft .NET
http://www.entityspaces.net

posted on Tuesday, March 02, 2010 11:10:38 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0]
 Saturday, February 27, 2010
kick it on DotNetKicks.com     Shout it

We are very pleased to be able to show you some of the awesome power coming in EntitySpaces 2010. We think ES2010 provides unmatched power when it comes to working with Silverlight and WCF services. Not only do our smart proxies track row state but they also track column dirty state. You can now bring back extra columns that are fetched via joins (or derived columns) to the client . Probably one of the most awesome feature is the ability to bind to these extra columns under Silverlight. As far as we know we are the only architecture that allows you to do this. You can actually bind to properties for which you have no property accessors, think of it as ITypedList for Silverlight if you will.

video

PART ONE

This first video is key to understanding our WCF Serialization capabilities. We think you will be impressed. The XML is shown each step along the way from server to client and back again. We use our own wrapper for the DataContract serializer to make things easy to demo. We think once you see this you will begin to understand what we have accomplished. Don’t skip this video, it is key to able to understanding Part Two.

video

PART TWO

This second video shows everything in Part One working in a real WCF / Silverlight application. We even bind to the extra column brought back via our Dynamic Query. And this column is not a property in our strongly typed entity. However, be forewarned, we don’t show the mechanics behind this for competitive reasons, once we ship ES2010 it will be made known.

 EntitySpaces

From Mobile Devices to large scale enterprise solutions in need of serious transaction support, EntitySpaces can meet your needs. Whether you’re writing an ASP.NET application with Medium Trust requirements, a Silverlight/WCF application, a Mono application, or a Windows.Forms application, the EntitySpaces architecture is there for you. EntitySpaces is provider independent, which means that you can run the same binary code against any of the supported databases. EntitySpaces is available in both C# and VB.NET. EntitySpaces uses no reflection, no XML files, and sports a tiny foot print of less than 200k. Pound for pound, EntitySpaces is one tough, dependable .NET architecture.

EntitySpaces LLC
Persistence Layer and Business Objects for Microsoft .NET
http://www.entityspaces.net

posted on Saturday, February 27, 2010 3:52:18 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]
 Thursday, February 25, 2010
kick it on DotNetKicks.com

We have managed to pull off something incredibly cool. We now support totally dynamic data binding under Silverlight. EntitySpaces has been gaining a lot of Silverlight fans lately as it really simplifies writing Silverlight applications and our serializable Dynamic Queries under Silverlight just rock. What we have done is akin to implementing ITypedList support for Silverlight (fancy databinding). Take a look at the sample Dynamic Query example below (running under Silverlight). Notice how we join Employees with Orders and bring back the Orders.Freight column (agreed, the query makes no sense at all but this was just for testing). Our Employees entity doesn’t have Frieght property so how are we going to bind our grid to it under Silverlight? No sweat for ES2010.

Proxies.EmployeesQueryProxyStub q = new Proxies.EmployeesQueryProxyStub("emp");
Proxies.OrdersQueryProxyStub o = new Proxies.OrdersQueryProxyStub("ord");

q.Select(q.EmployeeID, q.FirstName, q.LastName, q.HomePhone, q.HireDate, q.BirthDate, q.City, o.Freight);
q.Where(o.Freight > 100);
q.InnerJoin(o).On(q.EmployeeID == o.EmployeeID);
q.OrderBy(q.LastName.Ascending);

service.GetEmployeesCompleted += new EventHandler(service_GetEmployeesCompleted);
service.GetEmployeesAsync(Proxies.EmployeesQueryProxyStub.SerializeHelper.ToXml(q));

Now, in our XAML code in our Silverlight page we can bind our TextBlock or DataGridTextColumn to the “Freight” column even though our Employees entity has no Freight property at all, pretty darned cool. No other architecture on the market provides this capability. Also, remember ES2010 supports row level state (added, deleted, updated) and column level dirty state so all you need to do is ship your entity or collection back to the server and call Save, it’s that easy. EntitySpaces 2010 will be the premier Silverlight architecture.

We’re not going to show how we accomplished the dynamic databinding just yet (for competitive reasons). However, we are preparing a video that we will be showing soon. When you see it it’s going to knock your socks off. EntitySpaces and Silverlight is just an incredible combination, we are so excited about this release.

Also, we thought we would share a recent comment from our forums …

Interesting to note that coding the same BLL using LINQ ended up being twice as long and not quite as comprehensible (as EntitySpaces).

It just keeps getting better and better …

EntitySpaces

From Mobile Devices to large scale enterprise solutions in need of serious transaction support, EntitySpaces can meet your needs. Whether you’re writing an ASP.NET application with Medium Trust requirements, a Silverlight/WCF application, a Mono application, or a Windows.Forms application, the EntitySpaces architecture is there for you. EntitySpaces is provider independent, which means that you can run the same binary code against any of the supported databases. EntitySpaces is available in both C# and VB.NET. EntitySpaces uses no reflection, no XML files, and sports a tiny foot print of less than 200k. Pound for pound, EntitySpaces is one tough, dependable .NET architecture.

EntitySpaces LLC
Persistence Layer and Business Objects for Microsoft .NET
http://www.entityspaces.net

posted on Thursday, February 25, 2010 12:23:51 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0]
 Sunday, February 14, 2010

All of the templates are converted now, including the C#, the VB.NET, and the the templates that generate stored procedures (they are also much easier to read). The following list of EntitySpaces Data Providers have been converted over to the new faster ES2010 approach.

  • EntitySpaces.MSAccessProvider
  • EntitySpaces.MySqlClientProvider
  • EntitySpaces.Npgsql2Provider
  • EntitySpaces.NpgsqlProvider
  • EntitySpaces.OracleClientProvider
  • EntitySpaces.SqlClientProvider
  • EntitySpaces.SqlServerCeProvider
  • EntitySpaces.SybaseSqlAnywhereProvider
  • EntitySpaces.VistaDB4Provider
  • EntitySpaces.VistaDBProvider

The EntitySpaces core libraries running with the SqlClientProvider provider are passing almost all unit tests (the ones failing we expect to fail). All providers of course will be run through the entire suite of unit tests. The EntitySpaces code generation project files are now “path relative”. We need to convert the Compact Framework providers over and create the new SQLite provider as well (We already have the metadata for SQLite and can generate fine against SQLite). We also need to make sure ES2009 and ES2010 can run side by side.

Finally, we are switching installers, most likely we will be using the Tarma installer.

EntitySpaces

From Mobile Devices to large scale enterprise solutions in need of serious transaction support, EntitySpaces can meet your needs. Whether you’re writing an ASP.NET application with Medium Trust requirements, a Silverlight/WCF application, a Mono application, or a Windows.Forms application, the EntitySpaces architecture is there for you. EntitySpaces is provider independent, which means that you can run the same binary code against any of the supported databases. EntitySpaces is available in both C# and VB.NET. EntitySpaces uses no reflection, no XML files, and sports a tiny foot print of less than 200k. Pound for pound, EntitySpaces is one tough, dependable .NET architecture.

EntitySpaces LLC
Persistence Layer and Business Objects for Microsoft .NET
http://www.entityspaces.net

posted on Sunday, February 14, 2010 10:18:17 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]
 Friday, January 29, 2010

Here is a snapshot of EntitySpaces 2010 browsing a SQLite database. It’s not complete yet, we need to add the indexes and foreign keys but the metadata provider should be done by the end of this weekend. This is the code generation meta data provider. We still need to create the EntitySpaces data provider (which your SQLite application would use) but things are moving quickly.

SQLite_Metadata

EntitySpaces

From Mobile Devices to large scale enterprise solutions in need of serious transaction support, EntitySpaces can meet your needs. Whether you’re writing an ASP.NET application with Medium Trust requirements, a Silverlight/WCF application, a Mono application, or a Windows.Forms application, the EntitySpaces architecture is there for you. EntitySpaces is provider independent, which means that you can run the same binary code against any of the supported databases. EntitySpaces is available in both C# and VB.NET. EntitySpaces uses no reflection, no XML files, and sports a tiny foot print of less than 200k. Pound for pound, EntitySpaces is one tough, dependable .NET architecture.

EntitySpaces LLC
Persistence Layer and Business Objects for Microsoft .NET
http://www.entityspaces.net

posted on Friday, January 29, 2010 11:39:54 PM (Eastern Standard Time, UTC-05:00)  #    Comments [2]
 Sunday, January 24, 2010

We are making our code generation architecture much more user friendly for those that would like to write custom templates, Here is an example of the changes we are making.

Old Way: (where “col” is an IColumn such as when you are looping through all of the columns in a table or view)

<%= esMeta.esPlugIn.PropertyName(col) %>

New Way:

<%= col.PropertyName %>

The old way still works of course. We will be using this new approach in our templates, it sure makes the templates easier to read and understand. The PropertyName property is still driven by your choices in the EntitySpaces “Settings” tab. We will be doing this for about 30 or 40 such “things” including the EntityName, CollectionName, ParameterName, QueryName, ProxyName, and so on in our code generation engine. We are making these changes to encourage more customer driven template development to accommodate our soon to come online template sharing library as well as making our own template development easier. Of course, there will be a help file available as well.

EntitySpaces

From Mobile Devices to large scale enterprise solutions in need of serious transaction support, EntitySpaces can meet your needs. Whether you’re writing an ASP.NET application with Medium Trust requirements, a Silverlight/WCF application, a Mono application, or a Windows.Forms application, the EntitySpaces architecture is there for you. EntitySpaces is provider independent, which means that you can run the same binary code against any of the supported databases. EntitySpaces is available in both C# and VB.NET. EntitySpaces uses no reflection, no XML files, and sports a tiny foot print of less than 200k. Pound for pound, EntitySpaces is one tough, dependable .NET architecture.

EntitySpaces LLC
Persistence Layer and Business Objects for Microsoft .NET
http://www.entityspaces.net

posted on Sunday, January 24, 2010 3:08:02 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]
 Saturday, January 23, 2010

First, before we begin this blog post we wanted to let you know that we have re-enabled the commenting feature on our blog. Secondly, EntitySpaces 2009 already supports these SQL Server2008 data types but it returns them as type “string”. EntitySpaces 2010 allows you to handle them natively.

EntitySpaces has very powerful provider independence support so we have to be careful when implementing “extended” types for a given database engine. For instance, our NUnit test suite is a single binary that runs against all of our supported databases. The only thing we change when targeting a different database engine is the connection string, we don’t have to recompile or regenerate the code for each database because the databases all have essentially the same schema. So the question is, how do we handle non standard types offered by various database vendors? By non standard types we mean types that do not map to a .NET System Type such as System.Int32. We have the solution all worked out and EntitySpaces 2010 will allow us to support non-standard types offered by various database vendors. For instance, Microsoft SQL Server 2008 supports these types which require a separate assembly to work with.

Native SQL Type

.NET Type

geography SqlGeography
geometry SqlGeometry
hierarchyid SqlHierarchyId


The .NET types such as SqlGeography are contained in the Microsoft.SqlServer.Type assembly. Obviously we cannot link this library into or core EntitySpaces assemblies as this would require all EntitySpaces customers to have this assembly present even if they were only using Oracle. The good news is we have a solution for this. Here are the language mappings from the ES2010 esLanguages.xml file for the new SQL Server 2008 data types (currently, in ES2009 these map to type “string”, but now we map them to the real extended type).

<Type From="geography" To="SqlGeography" NonSystemType="true"/>
<Type From="geometry" To="SqlGeometry" NonSystemType="true"/>
<Type From="hierarchyid" To="SqlHierarchyId" NonSystemType="true"/>       

Notice that these are marked as NonSystemTypes = “true”, that is to say they cannot be mapped to a standard .NET type such as a “System.Int32” and so on …

During the code generation process we use this flag to generate the properties using the GetSystemObject/SetSystemObject methods as shown below.

virtual public SqlGeography TheGeography
{
    get
    {
        return (SqlGeography)base.GetSystemObject(MasterTypesMetadata.ColumnNames.TheGeography);
    }
    set
    {
        if(base.SetSystemObject(MasterTypesMetadata.ColumnNames.TheGeography, value));
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(MasterTypesMetadata.PropertyNames.TheGeography));
            }
        }
    }
}   

Notice how we simply use GetSystemObject/SetSystemObject and then cast to the specific type. This is done in your generated classes and not in our core assemblies. The property shown below is a standard column that maps to a system type (an integer column) and thus uses GetSystemInt32/SetSystemInt32 and requires no cast.

virtual public System.Int32? TheInt
{
    get
    {
        return base.GetSystemInt32(MasterTypesMetadata.ColumnNames.TheInt);
    }
    set
    {
        if(base.SetSystemInt32(MasterTypesMetadata.ColumnNames.TheInt, value))
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(MasterTypesMetadata.PropertyNames.TheInt));
            }
        }
    }
}   

Since we cannot have a GetSystemSqlGeometry() in our core assemblies without linking to special database provider assembly this works out nicely. It doesn’t effect non Microsoft folks at all.

An Example

Take a look at this rather sophisticated example. Here we create a complex shape and store it to the database. We have created a table in SQL Server 2008 called “MasterTypes” that we are using for testing all possible types.

SqlGeometryBuilder gb = new SqlGeometryBuilder();

// Set the Spatial Reference ID to 1
gb.SetSrid(1);
// Start the collection
gb.BeginGeometry(OpenGisGeometryType.MultiPolygon);
// Start the first element in this collection
gb.BeginGeometry(OpenGisGeometryType.Polygon);
// Define the first element (figure)
gb.BeginFigure(-77.054700,38.872957);
gb.AddLine(-77.057962, 38.872620);
gb.AddLine(-77.058547, 38.870079);
gb.AddLine(-77.055592, 38.868840);
gb.AddLine(-77.053217, 38.870656);
gb.AddLine(-77.054700, 38.872957);
// End the first element (figure)
gb.EndFigure();
// Define the second figure
gb.BeginFigure(-77.056972, 38.870639);
gb.AddLine(-77.055851, 38.870219);
gb.AddLine(-77.054875, 38.870864);
gb.AddLine(-77.055452, 38.871804);
gb.AddLine(-77.056784, 38.871655);
gb.AddLine(-77.056972, 38.870639);
gb.EndFigure();
// End the first polygon
gb.EndGeometry();

// Define the second polygon
gb.BeginGeometry(OpenGisGeometryType.Polygon);
gb.BeginFigure(-77.056408, 38.875290);
gb.AddLine(-77.056947, 38.875224);
gb.AddLine(-77.057466, 38.873598);
gb.AddLine(-77.057273, 38.872737);
gb.AddLine(-77.055335, 38.873020);
gb.AddLine(-77.055499, 38.874058);
gb.AddLine(-77.056408, 38.875290);
gb.EndFigure();
gb.EndGeometry();
// End (close) the collection

gb.EndGeometry();

MasterTypes m = new MasterTypes();
m.TheGeometry = gb.ConstructedGeometry;
m.Save();

This code works prefectly and saves complex shape to the database. Of course, you can read it back and access the "TheGeometry” property (we named the database column ‘TheGeometry’).

The screen shot below is what it looks like in the debugger when we inspect our “TheGeometry” property after reading it back from the database.

TheGeometry

One thing we have decided on is whether we should always make these extended types as nullable types, the answer will probably be yes.

We are also looking at supporting the SqlFileStream functionality but that is a little more complex. This approach should allow us to support non-standard data types for other database systems as well.

EntitySpaces

From Mobile Devices to large scale enterprise solutions in need of serious transaction support, EntitySpaces can meet your needs. Whether you’re writing an ASP.NET application with Medium Trust requirements, a Silverlight/WCF application, a Mono application, or a Windows.Forms application, the EntitySpaces architecture is there for you. EntitySpaces is provider independent, which means that you can run the same binary code against any of the supported databases. EntitySpaces is available in both C# and VB.NET. EntitySpaces uses no reflection, no XML files, and sports a tiny foot print of less than 200k. Pound for pound, EntitySpaces is one tough, dependable .NET architecture.

EntitySpaces LLC
Persistence Layer and Business Objects for Microsoft .NET
http://www.entityspaces.net

posted on Saturday, January 23, 2010 11:21:00 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]
 Thursday, January 21, 2010
Now having looked at the video this morning I promise not to make a video at 1 in the morning when I can barely hold my head up. I'm buying a professional quality microphone and will make video's in the morning after a fresh cup of coffee, still, the proxies are very cool ...

This preview should really get you fired up for ES2010. Our proxies are now even smarter. In EntitySpaces 2009 (ES2009) our proxies track row state for you automatically which is cool, however in ES2010 they also track column level dirty information. The proxies can also be decorated with DataContract, XML, and JSon serialization attribute tags all at the same time. This is very cool for client side proxies as clients can then serialize the data to disk, or to the Browser, or simply change the data and send it back to the server.

Our client side proxies are also great candidates for MVC development. With the coming release of .NET 4.0 you will have WCF and Workflow (WF4) integration capabilities and our client side proxies will make great data envelopes for traveling around inside of WF4 and ensure that your row state and column level dirty information are always up-to-date. We are making sure EntitySpaces can go where ever you need to go and do so effortlessly, and this includes the Cloud (more on that in an upcoming preview).

Our next preview video will show you ES2010’s ability to generate your WCF endpoints automatically. You can generate all of your WCF end points for your data in one big “mombo” WCF Service or have each entity type housed in it’s own WCF Service. This EntitySpaces template is highly customizable as well since it does not generate the core classes. It merely creates WCF Services and you can tweak it to meet your specific needs. Also, we are adding an online sharable template library that is accessible from within the EntitySpaces Visual Studio AddIn. That means you can upload and download templates directly from the template browser. So, if you create a cool tweak to our WCF template or create an awesome REST template for EntitySpaces and you want to share it you can, and it will automatically show up in the EntitySpaces Template Browser for all EntitySpaces users. Are you excited yet?

Take a look at this preview and see what you think.

EntitySpaces

From Mobile Devices to large scale enterprise solutions in need of serious transaction support, EntitySpaces can meet your needs. Whether you’re writing an ASP.NET application with Medium Trust requirements, a Silverlight/WCF application, a Mono application, or a Windows.Forms application, the EntitySpaces architecture is there for you. EntitySpaces is provider independent, which means that you can run the same binary code against any of the supported databases. EntitySpaces is available in both C# and VB.NET. EntitySpaces uses no reflection, no XML files, and sports a tiny foot print of less than 200k. Pound for pound, EntitySpaces is one tough, dependable .NET architecture.

EntitySpaces LLC
Persistence Layer and Business Objects for Microsoft .NET
http://www.entityspaces.net

posted on Thursday, January 21, 2010 12:40:42 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0]
 Monday, January 11, 2010
video

In this video we take a quick look at enhancements to Extended Properties (custom properties you add manually to your entities) and the ability to Clone both collections and single entities. The clones are shallow clones, that is to say, they do not clone the entire hierarchical model.

To watch the video click HERE or on the image on the left …

EntitySpaces

From Mobile Devices to large scale enterprise solutions in need of serious transaction support, EntitySpaces can meet your needs. Whether you’re writing an ASP.NET application with Medium Trust requirements, a Silverlight/WCF application, a Mono application, or a Windows.Forms application, the EntitySpaces architecture is there for you. EntitySpaces is provider independent, which means that you can run the same binary code against any of the supported databases. EntitySpaces is available in both C# and VB.NET. EntitySpaces uses no reflection, no XML files, and sports a tiny foot print of less than 200k. Pound for pound, EntitySpaces is one tough, dependable .NET architecture.

EntitySpaces LLC
Persistence Layer and Business Objects for Microsoft .NET
http://www.entityspaces.net

posted on Monday, January 11, 2010 7:45:46 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0]
 Sunday, January 03, 2010
video

Click the link above to watch the video …

This is another quick progress video on EntitySpaces 2010. In this video we show off our esEntityCollectionView<> class which in ES2009 relied on ADO.NET DataViews. However, these are now entirely our own creation and far superior. Remember, we do not use ADO.NET under the hood anymore (see Part I here if you missed it). However, our data providers which read and write to the database of course.

Also, we show off some very cool new debugging features that will really help you when debugging your EntitySpaces applications. And finally, with the use of implicit type casting operators, working with the proxy stub classes has become basically, well, transparent.

For instance, this is now possible … (and more)

public EmployeesCollectionProxyStub GetEmployees(string serializedQuery)
{
    EmployeesCollection coll = new EmployeesCollection ();
    coll.LoadAll();

    return coll;  // But where's the creation of the proxy stub collection?
}

EntitySpaces

From Mobile Devices to large scale enterprise solutions in need of serious transaction support, EntitySpaces can meet your needs. Whether you’re writing an ASP.NET application with Medium Trust requirements, a Silverlight/WCF application, a Mono application, or a Windows.Forms application, the EntitySpaces architecture is there for you. EntitySpaces is provider independent, which means that you can run the same binary code against any of the supported databases. EntitySpaces is available in both C# and VB.NET. EntitySpaces uses no reflection, no XML files, and sports a tiny foot print of less than 200k. Pound for pound, EntitySpaces is one tough, dependable .NET architecture.

EntitySpaces LLC
Persistence Layer and Business Objects for Microsoft .NET
http://www.entityspaces.net

posted on Sunday, January 03, 2010 8:16:37 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]
 Saturday, December 26, 2009

videoWe are furiously working on our ES2010 Prototype which is quickly turning into the “real deal”. The first thing we wanted to address was performance and have squeezed out a ton more horsepower, the performance is excellent. Secondly, we wanted to enhance our collections by implementing IList<T> which we have done. There is no longer a need to convert our collection classes to List<T> collections to gain access to it’s powerful API. Our collections and List<T> are essentially one and the same.

This means you have a whole new set of functionality at your disposal (using the newer .NET syntax) on our collections, including filtering, which is shown in the (hastily put together) video, you can view the video by clicking on the image on the left.

Here’s the way you can filter a collection in ES2010. The “coll” variable is an EntitySpaces collection object.

coll.Filter = coll.AsQueryable().Where(d => d.FirstName.EndsWith("2")).OrderByDescending(d => d.FirstName); 

In this case we are filtering an EntitiySpaces collection so that it only shows only FirstName’s that end with the number “2” and we also sort them in descending order by FirstName as well.

You can also now perform operations like this (shown below) on your collections, granted this example doesn’t make much sense but it does show the functionality.

int? max = coll.Max(ent => ent.EmployeeID); // Find the highest EmployeeID

We are working very hard and preserving the API too. One of the main changes is that we now no longer use DataTables/DataRows under the hood as a storage mechanism, however you really shouldn’t notice that. Our Custom Property support will now be attribute based and extremely simple to use. Serialization is going to even better (and it’s already fantastic in ES2009). Binary serialization will now be tiny now that we no longer use DataTable’s and we will be adding full JSON serialization support as well. There is just so much more to come and we can’t wait to show you more.

Forgive this hastily put together video, we will be doing a series of these video’s so keep your eyes on the blog.

EntitySpaces

From Mobile Devices to large scale enterprise solutions in need of serious transaction support, EntitySpaces can meet your needs. Whether you’re writing an ASP.NET application with Medium Trust requirements, a Silverlight/WCF application, a Mono application, or a Windows.Forms application, the EntitySpaces architecture is there for you. EntitySpaces is provider independent, which means that you can run the same binary code against any of the supported databases. EntitySpaces is available in both C# and VB.NET. EntitySpaces uses no reflection, no XML files, and sports a tiny foot print of less than 200k. Pound for pound, EntitySpaces is one tough, dependable .NET architecture.

EntitySpaces LLC
Persistence Layer and Business Objects for Microsoft .NET
http://www.entityspaces.net

posted on Saturday, December 26, 2009 8:15:59 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]