Sunday, September 30, 2007

This is merely a heads-up post for our users. The new EntitySpaces Beta is now available for download. The Trial version as well as the Developer version and Source are all available for download. Our revamped ASPX templates, now referred to as GridLoaders, are included in the trial. The old ASPX pages are no longer shipped, if you have them and are using them you do not have to switch over to the new GridLoaders.

The new DynamicQuery improvements are significant in this release. It is not the goal of this release to be able to perform every query possible, but it should go a long way toward improving your productivity.

Here are the new features included in this release.

  • The DynamicQuery API now supports InnerJoin, LeftJoin, RightJoin and FullJoin
  • The Collection classes now have a method called LowLevelBind() which will bind to the low level DataTable, useful when bringing back extra columns that are not in your entity.
  • The DynamicQuery API now supports Arithmetic Expressions using +  -  *  /  %
  • The DynamicQuery API now supports the C# natural language operators & (and) as well as | (or). VB users can use And and Or
  • The ASPX Suite(S) have been enhanced and are now referred to the "GridLoaders", their is a PDF on your menu after installation.
  • The is now an esDataSource sample (C# and VB) located in the EntitySpaces directory after install
  • There are three new starter templates in the EntitySpaces.Example.Templates namespace for those wishing to create templates.

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, 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.

The EntitySpaces Team
--

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

posted on Sunday, September 30, 2007 6:34:01 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]
 Thursday, September 27, 2007

Mike Griffin, creator of MyGeneration and EntitySpaces, talks with Carl and Richard about EntitySpaces, a persistence layer and business object system for the Microsoft .NET 2.0 Framework, as well as his experiences with LINQ and other technologies.


Mike Griffin co-authored and founded MyGeneration Software with Justin Greenwood in late 2003 to early 2004. MyGeneration is now right at the top in CNET download.com’s .NET Utility category.


But, it wasn’t always that way. MyGeneration opened with a meager offering that supported SQL Server and Oracle, and only supported VBScript and Jscript. Since then, it has grown to support 13 databases, added support for both C# and VB.NET, has a huge online community sharing templates via the MyGeneration Online Template library, and has been featured in several magazines. The MyGeneration Source code has now been released on SourceForge.NET under the BSD license.


Mike also created dOOdads, a .NET architecture that became very popular and helped fuel the desire for MyGeneration. Mike created the MyMeta metadata engine for MyGeneration and there is no better metadata engine for the Microsoft .NET Framework.


In 2005, Mike started working on a new architecture, one that would be sold as a commercial offering and take advantage of the features in .NET 2.0, and thus EntitySpaces was born. Creating a new offering that would be commercial was more than a one person project, so Mike set out to find some key resources and he found them.


Mike has proven that he can build communities around products and energize others to rally around them. Mike is a senior architect with Leaf Software Solutions.


Show #276 | 9/27/2007 (67 minutes)

 

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, 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.

The EntitySpaces Team
--

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

posted on Thursday, September 27, 2007 6:41:56 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0]
 Wednesday, September 26, 2007

On October 13th in Indianapolis, Indiana I'll be in the TridgeAlliance booth handing out EntitySpaces glossies and talking to people about EntitySpaces. I might be giving a "chalk talk" or a "Lunch & Learn Session" on EntitySpaces as well, I'm not sure on that yet. Next year for sure we will have our own booth. Anyway, if you're near Indy you might want to check this out, registration is filling up, there are already near 400 registrants. 

IndyTechFest
http://www.indytechfest.com/

If you're there you can find me in the TridgeAlliance booth.

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, 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.

The EntitySpaces Team
--

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

posted on Wednesday, September 26, 2007 6:29:25 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]
 Wednesday, September 19, 2007

I just had to make another post, this is so much fun. Writing queries in our enhanced dynamic query language is totally awesome, and so powerful. I'm writing some unit tests to go into our massive NUnit test suite and just had to post these ...

public void JoinWithArithmeticExpressionOrderByCalulatedColumn()
{
    // Notice I create a calulated columns based on the TotalSales, then Order by it descending
    CustomerQuery cust = new CustomerQuery("c");
    OrderQuery order = new OrderQuery("o");
    OrderItemQuery item = new OrderItemQuery("oi");

    cust.Select(cust.CustomerName, (item.Quantity * item.UnitPrice).Sum().As("TotalSales"));
    cust.InnerJoin(order).On(order.CustID == cust.CustomerID);
    cust.InnerJoin(item).On(item.OrderID == order.OrderID);
    cust.GroupBy(cust.CustomerName);
    cust.OrderBy("TotalSales", esOrderByDirection.Descending);

    CustomerCollection coll = new CustomerCollection();
    coll.Load(cust);
}

The SQL produced:

SELECT c.[CustomerName],SUM(oi.[Quantity]) AS 'TotalSales'
FROM [ForeignKeyTest].[dbo].[Customer] c
JOIN [ForeignKeyTest].[dbo].[Order] o ON (o.[CustID] = c.[CustomerID])
JOIN [ForeignKeyTest].[dbo].[OrderItem] oi ON (oi.[OrderID] = o.[OrderID])
GROUP BY c.[CustomerName]
ORDER BY TotalSales DESC

The result set is CustomerName / TotalSales sorted in decending order by TotalSales ...

Another query I wrote merely concatenated the Employee FirstName and LastName columns, and upper cased them.

public void ArithmeticConcatenationNoJoinWithSubOperator()
{
    EmployeeCollection coll = new EmployeeCollection();
    EmployeeQuery q = coll.Query;

    q.Select( (q.LastName + "," + q.FirstName).ToUpper().As("FullName") );
    q.OrderBy(q.LastName.Ascending);

    coll.Query.Load();
}

I've seen many of our competitors query languages, I think by far EntitySpaces has the cleanest, most straight-forward syntax, by light years in most cases. We've got some really cool stuff coming, hang on ...

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, 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.

The EntitySpaces Team
--

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


kick it on DotNetKicks.com
posted on Wednesday, September 19, 2007 7:47:35 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0]
 Tuesday, September 18, 2007

The EntitySpaces Dynamic Query API will soon be sporting Join’s and Arithmetic Expressions. The syntax is so elegant even LINQ enthusiasts will take pause. Let’s take a look at how you would do a join using the enhanced EntitySpaces DynamicQuery. Note that we are using all of your existing objects to build the query.

Performing Joins …

CustomersQuery cust = new CustomersQuery ("c");
OrdersQuery orders = new OrdersQuery ("o");
OrderDetailsQuery details = new OrderDetailsQuery ("d");

cust.Select(cust.ContactName, details.Quantity.Sum().As("TotalQuantity"));
cust.InnerJoin(orders).On(cust.CustomerID == orders.CustomerID);
cust.InnerJoin(details).On(orders.OrderID == details.OrderID);
cust.Where(cust.ContactName.Like("%Mike%"));
cust.GroupBy(cust.ContactName);

CustomersCollection coll = new CustomersCollection ();
coll.Load(cust);    // Load it …

Now that is a pretty sweet syntax …

Of course, RightJoin, LeftJoin, and FullJoin are also supported. The nice thing about this approach is that you are spoonfed the syntax via intellisense, no need to stop and create a view (although you can if you want to and generate your business entities off of the view). The "o", "c" and "c" shown above are merely the aliases used when building the SQL.

Arithmetic Expressions

You can now use arithmetic expressions in your query's. Notice how you can use the natural language syntax with * / + - and %. Take a look at this sample …

CustomersQuery cust = new CustomersQuery ("c");
OrdersQuery orders = new OrdersQuery ("o");
OrderDetailsQuery details = new OrderDetailsQuery ("d");

cust.Select(cust.ContactName, (details.Quantity * details.Price).Sum().As("TotalPrice"));
cust.InnerJoin(orders).On(cust.CustomerID == orders.CustomerID);
cust.InnerJoin(details).On(orders.OrderID == details.OrderID);
cust.Where(cust.ContactName.Like("%Mike%"));

CustomersCollection coll = new CustomersCollection ();
coll.Load(cust);    // Load it …

How Does this Effect Binding?

Your EntitySpaces collections will now provide a new method named LowLevelBind(). Normally, you bind directly to the properties in your EntitySpaces entities. However, when joins are in play you are bringing back columns that aren’t in your entities. Thus, the LowLevelBind will bind directly to the underlying DataTable. The are other ways of course using EntitySpaces but we wont cover those in this post.

grid.DataSource = coll.LowLevelBind();

Can I still Save an Entity that was Built off a Join?

The answer is "yes". Of course, it will only save to the main table, in the above case the Customer table.
We already have this implemented and are hoping to have a beta out with joins and arithmetic expressions around October 1st, 2007.

These new features will be available for all of the many databases supported by EntitySpaces.

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, 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.

The EntitySpaces Team
--

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

posted on Tuesday, September 18, 2007 11:22:28 AM (Eastern Standard Time, UTC-05:00)  #    Comments [2]
 Friday, September 14, 2007

Our fall ES2007 release is slotted to add these new or enhanced features.

  • ASPX Templates (enhanced not new)
  • Constructors in your Custom Classes
  • Hierarchical DataBinding
  • Hierarchical Serialization
  • Cascading Deletes (Hierarchical)
  • New Stored Procedure Template - (generates invoking code doesn't create objects)
  • Ability to Save without transactions (useful when importing)
  • Many other items from our tracking system

Our first ES2007 fall beta is slotted for October 15th, 2007. Our ES2008 Q1 roadmap will be published soon 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, 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.

The EntitySpaces Team
--

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

posted on Friday, September 14, 2007 8:04:22 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0]